2017-10-23 2 views
2

Ich muss alle Buchstaben am Anfang einer Zeichenfolge, alle Buchstaben vor die erste Zahl, die in der Zeichenfolge angezeigt wird.Großbuchstaben alle Buchstaben vor Nummer in String

abc123 wird

abc123def wird ABC123def

Zuerst finde ich den Index der ersten Zahl in der Zeichenfolge ABC123 werden:

var index = myString.search(/\d/); 

Dann habe ich eine for-Schleife, wo ich versuche, ändere jeden Buchstaben vor dieser Nummer:

for (var i=0; i<index; i++) { 
    myString = myString.charAt(i).toUpperCase() + myString.slice(i+1); 
} 

Das Problem ist th am Code entfernt den Buchstaben am Anfang in jeder Schleife. Wie kann ich es besser machen?

Vielen Dank für Ihre Hilfe

+1

'console.log (myString.replace (/^\ D + /, s => s.toUpperCase()));' – Thomas

+0

Was: ' "abcd12efgh34ijkl"' ? –

+0

@ibrahimmahrir "vor der ersten Nummer" – Thomas

Antwort

1

Sie können es unten durch den Code tun:

var str = "abc23mlk"; 
 
var index = str.search(/\d/); 
 
if (index !== -1) { 
 
    str = str.slice(0, index).toUpperCase() + str.slice(index); 
 
} 
 
console.log(str);

+0

Brilliant! Das ist, was ich gesucht habe. Schön und einfach. Vielen Dank. – chichi

1

Sie einen regulären Ausdruck und eine replacer Funktion verwenden können:

function replace(text) { 
 
    return text.replace(/[a-z]+(?=\d)/i, function(match) { 
 
    return match.toUpperCase(); 
 
    }); 
 
} 
 

 
["abc123", "abc123def", "abcd12efgh34ijkl"].forEach(function(test) { 
 
    console.log("'" + test + "' becomes '" + replace(test) + "'"); 
 
});

Die regex /[a-z]+(?=\d)/i sieht für die erste Folge von Buchstaben ([a-z]+), dass wird sofort gefolgt von einer Ziffer ((?=\d) hier als positive Vorausschau, so dass es nicht übereinstimmt).

+0

Auch nett, danke! – chichi

1

Sie tun auch so etwas wie

  1. den Index finden, wie, wie Sie jetzt tun
  2. Substring und kapitalisieren
  3. Slice und fügen Sie
var myString = "abc123" 
var index = myString.search(/\d/); 
myString = myString.substr(0,index).toUpperCase() + myString.slice(index); 
Verwandte Themen