Gibt es eine einfache Möglichkeit in Javascript, das letzte Auftreten eines '_' (Unterstrichs) in einer bestimmten Zeichenfolge zu ersetzen?
Gibt es eine einfache Möglichkeit in Javascript, das letzte Auftreten eines '_' (Unterstrichs) in einer bestimmten Zeichenfolge zu ersetzen?
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
new RegExpLesen Sie hier alles darüber: developer.mozilla.org/en-US/docs/JavaScript/Guide/… - Denken Sie daran, die replaceMeVariable zu maskieren , damit sie keine speziellen enthält Zeichen, die den regulären Ausdruck verändern
new RegExpSyntax 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)
)
+1fü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!
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?
Halte es einfach
var someString = "a_b_c";
var newCharacter = "+";
var newString = someString.substring(0, someString.lastIndexOf('_')) + newCharacter + someString.substring(someString.lastIndexOf('_')+1);
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
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)
)
s = s.split(toRemove) // ["", "+++", "---", "$$$"]
s.slice(0,-1) // ["", "+++", "---"]
s.slice(0,-1).join(toRemove) // "})()+++})()---"
s.pop() // "$$$"
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);
// 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 :)'
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)