Gibt es eine einfache Möglichkeit in Javascript, das letzte Auftreten eines '_' (Unterstrichs) in einer bestimmten Zeichenfolge zu ersetzen?
javascript
CLiown
quelle
quelle
Antworten:
Sie benötigen jQuery nicht, sondern nur einen regulären Ausdruck.
Dadurch wird der letzte Unterstrich entfernt:
var str = 'a_b_c'; console.log( str.replace(/_([^_]*)$/, '$1') ) //a_bc
Dadurch wird es durch den Inhalt der Variablen ersetzt
replacement
:var str = 'a_b_c', replacement = '!'; console.log( str.replace(/_([^_]*)$/, replacement + '$1') ) //a_b!c
quelle
new RegExp
Lesen Sie hier alles darüber: developer.mozilla.org/en-US/docs/JavaScript/Guide/… - Denken Sie daran, diereplaceMe
Variable zu maskieren , damit sie keine speziellen enthält Zeichen, die den regulären Ausdruck verändernnew RegExp
Syntax Bescheid . Meine Frage war eher wie "Wo soll ich die Variable replaceMe platzieren"? zB:var aRegExpr = new RegExp("_([^"+replaceMe+"]*)$");
Es ist weder jQuery noch Regex erforderlich, vorausgesetzt, das zu ersetzende Zeichen ist in der Zeichenfolge vorhanden
Ersetzen Sie das letzte Zeichen in einer Zeichenfolge
str = str.substring(0,str.length-2)+otherchar
Ersetzen Sie den letzten Unterstrich in einer Zeichenfolge
var pos = str.lastIndexOf('_'); str = str.substring(0,pos) + otherchar + str.substring(pos+1)
oder verwenden Sie einen der regulären Ausdrücke aus den anderen Antworten
var str1 = "Replace the full stop with a questionmark." var str2 = "Replace last _ with another char other than the underscore _ near the end" // Replace last char in a string console.log( str1.substring(0,str1.length-2)+"?" ) // alternative syntax console.log( str1.slice(0,-1)+"?" ) // Replace last underscore in a string var pos = str2.lastIndexOf('_'), otherchar = "|"; console.log( str2.substring(0,pos) + otherchar + str2.substring(pos+1) ) // alternative syntax console.log( str2.slice(0,pos) + otherchar + str2.slice(pos+1) )
quelle
+1
für keine Regex &lastIndexOf(...)
führt die Suche vom ENDE aus (bessere Leistung), so dass die aktuell akzeptierte Regexp nicht schneller sein kann.Was ist damit?
function replaceLast(x, y, z){ var a = x.split(""); a[x.lastIndexOf(y)] = z; return a.join(""); } replaceLast("Hello world!", "l", "x"); // Hello worxd!
quelle
Ein anderer super klarer Weg, dies zu tun, könnte wie folgt sein:
quelle
Kehren Sie die Zeichenfolge um, ersetzen Sie das Zeichen und kehren Sie die Zeichenfolge um.
Hier ist ein Beitrag zum Umkehren einer Zeichenfolge in Javascript: Wie können Sie eine Zeichenfolge in JavaScript umkehren?
quelle
Halte es einfach
var someString = "a_b_c"; var newCharacter = "+"; var newString = someString.substring(0, someString.lastIndexOf('_')) + newCharacter + someString.substring(someString.lastIndexOf('_')+1);
quelle
Dies ist der Antwort von mplungjan sehr ähnlich, kann aber etwas einfacher sein (insbesondere, wenn Sie direkt danach andere Zeichenfolgenmanipulationen durchführen müssen und diese als Array behalten möchten). Ich dachte nur, ich würde sie für den Fall veröffentlichen, dass jemand sie veröffentlicht bevorzugt es.
var str = 'a_b_c'; str = str.split(''); //['a','_','b','_','c'] str.splice(str.lastIndexOf('_'),1,'-'); //['a','_','b','-','c'] str = str.join(''); //'a_b-c'
Das '_' kann gegen das Zeichen ausgetauscht werden, das Sie ersetzen möchten
Und das '-' kann durch das Zeichen oder den String ersetzt werden, durch den Sie es ersetzen möchten
quelle
var someString = "(/n{})+++(/n{})---(/n{})$$$"; var toRemove = "(/n{})"; // should find & remove last occurrence function removeLast(s, r){ s = s.split(r) return s.slice(0,-1).join(r) + s.pop() } console.log( removeLast(someString, toRemove) )
Nervenzusammenbruch:
s = s.split(toRemove) // ["", "+++", "---", "$$$"]
s.slice(0,-1) // ["", "+++", "---"]
s.slice(0,-1).join(toRemove) // "})()+++})()---"
s.pop() // "$$$"
quelle
Sie können diesen Code verwenden
var str="test_String_ABC"; var strReplacedWith=" and "; var currentIndex = str.lastIndexOf("_"); str = str.substring(0, currentIndex) + strReplacedWith + str.substring(currentIndex + 1, str.length); alert(str);
quelle
// Define variables let haystack = 'I do not want to replace this, but this' let needle = 'this' let replacement = 'hey it works :)' // Reverse it haystack = Array.from(haystack).reverse().join('') needle = Array.from(needle).reverse().join('') replacement = Array.from(replacement).reverse().join('') // Make the replacement haystack = haystack.replace(needle, replacement) // Reverse it back let results = Array.from(haystack).reverse().join('') console.log(results) // 'I do not want to replace this, but hey it works :)'
quelle
Dies ist eine rekursive Methode, mit der mehrere Vorkommen von "Endchar" entfernt werden:
function TrimEnd(str, endchar) { while (str.endsWith(endchar) && str !== "" && endchar !== "") { str = str.slice(0, -1); } return str; } var res = TrimEnd("Look at me. I'm a string without dots at the end...", "."); console.log(res)
quelle