Entfernen Sie das letzte Komma aus einer Zeichenfolge

139

Wie kann ich mit JavaScript das letzte Komma entfernen, aber nur, wenn das Komma das letzte Zeichen ist oder wenn nach dem Komma nur Leerzeichen stehen? Das ist mein Code. Ich habe eine funktionierende Geige . Aber es hat einen Fehler.

var str = 'This, is a test.'; 
alert( removeLastComma(str) ); // should remain unchanged

var str = 'This, is a test,'; 
alert( removeLastComma(str) ); // should remove the last comma

var str = 'This is a test,          '; 
alert( removeLastComma(str) ); // should remove the last comma

function removeLastComma(strng){        
    var n=strng.lastIndexOf(",");
    var a=strng.substring(0,n) 
    return a;
}
Ana Maria
quelle
Sollte es auch die Leerzeichen am Ende entfernen?
Felix Kling
wenn es nur Leerzeichen ist, ja
AnaMaria
Wie wäre es mit Leerzeichen vor dem betreffenden Komma? Sollten diese auch entfernt werden? in diesem Fall: str = str.replace (/, \ s * $ /, ""); würde str = str.replace werden (/ \ s *, \ s * $ /, "");
Amitabh

Antworten:

390

Dadurch werden das letzte Komma und alle Leerzeichen danach entfernt:

str = str.replace(/,\s*$/, "");

Es wird ein regulärer Ausdruck verwendet:

  • Die /Markierung der Anfang und das Ende des regulären Ausdrucks

  • Das ,entspricht dem Komma

  • Das \sbedeutet Leerzeichen (Leerzeichen, Tabulator usw.) und das *Mittel 0 oder mehr

  • Das $am Ende kennzeichnet das Ende der Zeichenfolge

Jon
quelle
Verwenden Sie str.replace (/, + / g, ","). Replace (/ (, \ s * $) | (^, *) /, ""); Wenn Sie das anfängliche leere Komma oder Doppelkomma entfernen möchten, wird Beispiel ",, 8 ,, 7" zu "8,7"
Miguel
@ ParkashKumar Jon hat bereits über das letzte erwähnt /. The / mark the beginning and end of the regular expression.
Asif Ali
Sehr nützlich Danke.
Alok Ranjan
13

Sie können das letzte Komma mithilfe der Slice () -Methode aus einer Zeichenfolge entfernen. Das folgende Beispiel finden Sie hier :

var strVal = $.trim($('.txtValue').val());
var lastChar = strVal.slice(-1);
if (lastChar == ',') {
    strVal = strVal.slice(0, -1);
}

Hier ist ein Beispiel

function myFunction() {
	var strVal = $.trim($('.txtValue').text());
	var lastChar = strVal.slice(-1);
	if (lastChar == ',') { // check last character is string
		strVal = strVal.slice(0, -1); // trim last character
		$("#demo").text(strVal);
	}
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>


<p class="txtValue">Striing with Commma,</p>

<button onclick="myFunction()">Try it</button>

<p id="demo"></p>

e-techpulse
quelle
9
function removeLastComma(str) {
   return str.replace(/,(\s+)?$/, '');   
}
Daniel Sloof
quelle
3

langer Schuss hier

var sentence="I got,. commas, here,";
var pattern=/,/g;
var currentIndex;
while (pattern.test(sentence)==true)  {    
  currentIndex=pattern.lastIndex;
 }
if(currentIndex==sentence.trim().length)
alert(sentence.substring(0,currentIndex-1));
else
 alert(sentence);

quelle
Obwohl die Frage bereits beantwortet wurde, war ich von Ihrer Lösung fasziniert und entschied mich zu testen. Leider funktioniert es nicht :(
AnaMaria
Verwenden Sie diese Eingabe "Dies ist ein Test." Idealerweise sollte die Ausgabe der gleiche Satz sein, aber in Ihrem Programm wird er als "Dies" angegeben. Wenn ich recht habe, dann markiere meine Frage +1. Wenn ich falsch
liege,
http://jsfiddle.net/rpss/3rSNr/ Alle Kommaindizes werden abgerufen und in "currentIndex" eingefügt, wobei sie nacheinander in der Schleife ersetzt werden (Prüfung auf übereinstimmendes Muster und Abrufen des Index, wenn eine Übereinstimmung gefunden wird). Schließlich wird diese Variable mit dem Index des letzten Kommas
:) stimmt, dieser Code wird das letzte Komma entfernen, aber Sie wollten, dass das letzte Komma am Ende des Satzes entfernt wird, da ... Ihre Frage ist markiert mit +1
Nicht genau. Sie haben diesen Teil verpasst "aber nur, wenn das Komma das letzte Zeichen ist oder wenn nach dem Komma nur Leerzeichen stehen"
AnaMaria
3

Die stark positiv bewertete Antwort entfernt nicht nur das letzte Komma, sondern auch alle nachfolgenden Leerzeichen. Das Entfernen der folgenden Leerzeichen war jedoch nicht Teil des ursprünglichen Problems. So:

let str = 'abc,def,ghi, ';
let str2 = str.replace(/,(?=\s*$)/, '');
alert("'" + str2 + "'");
'abc,def,ghi '

https://jsfiddle.net/dc8moa3k/

Booboo
quelle
1

Das Problem ist, dass Sie das letzte Komma in der Zeichenfolge entfernen, nicht das Komma, wenn es das letzte in der Zeichenfolge ist. Sie sollten also ein if setzen, um zu überprüfen, ob das letzte Zeichen '' ist, und es ändern, wenn es ist.

EDIT: Ist es wirklich so verwirrend?

'Dies ist eine zufällige Zeichenfolge'

Ihr Code findet das letzte Komma aus der Zeichenfolge und speichert nur "Dies", da das letzte Komma nach "Dies" nicht am Ende der Zeichenfolge steht.

Hristo Valkanov
quelle
9
Ihre Antwort ist verwirrender als die Frage. Tut mir leid, dass ich brutal ehrlich
bin
xD das verstehe ich sehr. Ihr Skript findet das letzte Koma in der Zeichenfolge und entfernt alles danach. In diesem Fall, wenn das Komma in der Mitte ist, wie in diesem "Dies ist ein Test". der Befehl strng.lastIndexOf (","); wird 4 zurückgeben und somit alles nach dem 5. Buchstaben entfernen. Sie müssen also überprüfen, ob das "," der letzte Buchstabe der Zeichenfolge ist, bevor Sie den Rest entfernen :)
Hristo Valkanov
1
Ich verstehe, was du meinst und ich habe verstanden, wo ich falsch liege. Aber Ihre Antwort ist besser als Kommentar geeignet, da es mir nicht viel geholfen hat. Hoffe du bekommst was ich sage. Nichts für ungut
AnaMaria
Ich hatte vor, auf Anfrage auch Code hinzuzufügen, aber als ich in Fiddle bearbeitete, sah ich, dass es bereits eine perfekte Antwort gab, also ließ ich es so. :)
Hristo Valkanov
1

Sie können das letzte Komma entfernen:

var sentence = "I got,. commas, here,";
sentence = sentence.replace(/(.+),$/, '$1');
console.log(sentence);
Trai Hải Phòng
quelle
1

Letztes Komma entfernen. Arbeitsbeispiel

function truncateText() {
  var str= document.getElementById('input').value;
  str = str.replace(/,\s*$/, "");
  console.log(str);
}
<input id="input" value="address line one,"/>
<button onclick="truncateText()">Truncate</button>

Deepu Reghunath
quelle
1

Zunächst sollte geprüft werden, ob das letzte Zeichen ein Komma ist. Wenn es existiert, entfernen Sie es.

if (str.indexOf(',', this.length - ','.length) !== -1) {
    str = str.substring(0, str.length - 1);
}

HINWEIS str.indexOf ( ' ' this.length -.', 'Länge) auf str.indexOf vereinfacht werden (',', this.length - 1)

Max Alexander Hanna
quelle