Ersetzt das letzte Vorkommen des Zeichens in der Zeichenfolge

Lesezeit: 4 Minuten

Benutzer-Avatar
CLiown

Gibt es in Javascript eine einfache Möglichkeit, das letzte Vorkommen eines ‘_’ (Unterstrich) in einer bestimmten Zeichenfolge zu ersetzen?

  • Ist es immer das letzte Zeichen der Zeichenfolge? Wenn nicht, schau dir string.lastIndexOf(searchstring, start) an

    – Skarmaten

    31. März 2011 um 8:56 Uhr

  • Sie brauchen kein jQuery.

    – zzzzBov

    19. Februar 2013 um 22:41 Uhr


  • mögliches Duplikat von So ersetzen Sie das letzte Vorkommen von Zeichen in einer Zeichenfolge mit Javascript

    – Anderson Green

    4. September 2014 um 5:41 Uhr

Benutzer-Avatar
Martin Jespersen

Sie brauchen kein jQuery, 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

  • @Martin Jespersen: Was ist, wenn der zu ersetzende Text nicht der Unterstrich ist, sondern der Inhalt einer Variablen namens replaceMe? Wie soll die Regex geändert werden?

    – Pierpaolo

    18. Dezember 2012 um 10:07 Uhr

  • @Pierpaolo: Sie müssten den regulären Ausdruck mit a erstellen new RegExplesen Sie hier alles darüber: developer.mozilla.org/en-US/docs/JavaScript/Guide/… – Denken Sie daran, dem zu entkommen replaceMe -Variable, sodass sie keine Sonderzeichen enthält, die den regulären Ausdruck verändern

    – Martin Jespersen

    18. Dezember 2012 um 18:38 Uhr


  • @Martin Jespersen: Danke für den Link. Ich wusste schon von der new RegExp Syntax. Meine Frage war eher “wo soll ich die Variable replaceMe ablegen”? z.B: var aRegExpr = new RegExp("_([^"+replaceMe+"]*)$");

    – Pierpaolo

    19. Dezember 2012 um 8:33 Uhr


  • @Pierpaolo: Es ist nicht so einfach, da Sie ein Wort und nicht nur ein einzelnes Zeichen in einer Variablen haben können – Sie sollten eine neue Frage dazu stellen 🙂 Es ist zu kompliziert für einen Kommentar hier

    – Martin Jespersen

    19. Dezember 2012 um 22:57 Uhr

  • Vielen Dank. Ich verstehe, ich werde suchen, ob es schon einen gibt.

    – Pierpaolo

    20. Dezember 2012 um 8:24 Uhr

Benutzer-Avatar
mplungjan

Weder jQuery noch Regex sind erforderlich, vorausgesetzt, das Zeichen, das Sie ersetzen möchten, ist in der Zeichenfolge vorhanden

Ersetzt das letzte Zeichen in einer Zeichenfolge

str = str.substring(0,str.length-2)+otherchar

Ersetzt 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)
)

  • +1 für “keine Notwendigkeit für jQuery”. Es ist wichtig zu wissen, dass JQuery nicht die Antwort auf alles ist. Javascript ist eine perfekt fähige Programmiersprache, ohne alles durch jquery schieben zu müssen.

    – Spudley

    31. März 2011 um 8:57 Uhr

  • @Spudley Also wahr. Hier bei SO ist jedoch keine JS-Antwort vollständig ohne eine jQuery-Version ;))

    – mplungjan

    31. März 2011 um 8:58 Uhr

  • +1 zum kein regulärer Ausdruck & lastIndexOf(...) führt die Suche vom ENDE aus (bessere Leistung) also die derzeit akzeptierte Regexp sogar kippen sei schneller.

    – jave.web

    23. September 2016 um 13:22 Uhr


  • “nor regex”…. diese Lösung funktioniert nicht, wenn string keinen Unterstrich enthält. Regex-Version tut. Sie können das Ersatzzeichen nicht hinzufügen, wenn es nicht benötigt wird.

    – Teddybus

    10. Juni 2019 um 13:32 Uhr

  • @tedebus bitte lies die Frage. Einige der Beispiele können auch jedes letzte Zeichen verarbeiten

    – mplungjan

    10. Juni 2019 um 13:34 Uhr

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!

Eine andere super klare Möglichkeit, dies zu tun, könnte wie folgt aussehen:

let modifiedString = originalString
   .split('').reverse().join('')
   .replace('_', '')
   .split('').reverse().join('')

Halte es einfach

var someString = "a_b_c";
var newCharacter = "+";

var newString = someString.substring(0, someString.lastIndexOf('_')) + newCharacter + someString.substring(someString.lastIndexOf('_')+1);

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)
)

Abbauen:

s = s.split(toRemove)         // ["", "+++", "---", "$$$"]
s.slice(0,-1)                 //  ["", "+++", "---"]   
s.slice(0,-1).join(toRemove)  // "})()+++})()---"
s.pop()                       //  "$$$"   

Benutzer-Avatar
Gemeinschaft

Kehren Sie die Zeichenfolge um, ersetzen Sie das Zeichen, kehren Sie die Zeichenfolge um.

Hier ist ein Beitrag zum Umkehren einer Zeichenfolge in Javascript: Wie kehrt man eine Zeichenfolge in JavaScript um?

1179610cookie-checkErsetzt das letzte Vorkommen des Zeichens in der Zeichenfolge

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy