In Java habe ich einen String:
Jamaica
Ich möchte das erste Zeichen der Zeichenfolge entfernen und dann zurückkehren amaica
Wie würde ich das machen?
In Java habe ich einen String:
Jamaica
Ich möchte das erste Zeichen der Zeichenfolge entfernen und dann zurückkehren amaica
Wie würde ich das machen?
Antworten:
Verwenden Sie die substring()
Funktion mit dem Argument von 1
, um die Teilzeichenfolge von Position 1 ( nach dem ersten Zeichen) bis zum Ende der Zeichenfolge zu bringen (wobei das zweite Argument standardmäßig die gesamte Länge der Zeichenfolge verwendet).
"Jamaica".substring(1);
public String removeFirstChar(String s){
return s.substring(1);
}
removeFirst()
.
Verwenden Sie substring()
und geben Sie die Anzahl der Zeichen an, die Sie von vorne zuschneiden möchten.
String value = "Jamaica";
value = value.substring(1);
Antwort: "amaica"
Verwenden Sie den ternären Java-Operator, um schnell zu überprüfen, ob Ihr Charakter vorhanden ist, bevor Sie ihn entfernen. Dadurch wird das führende Zeichen nur entfernt, wenn es vorhanden ist. Wenn eine leere Zeichenfolge übergeben wird, wird eine leere Zeichenfolge zurückgegeben.
String header = "";
header = header.startsWith("#") ? header.substring(1) : header;
System.out.println(header);
header = "foobar";
header = header.startsWith("#") ? header.substring(1) : header;
System.out.println(header);
header = "#moobar";
header = header.startsWith("#") ? header.substring(1) : header;
System.out.println(header);
Drucke:
blankstring
foobar
moobar
String a = "Cool";
a = a.replace("o","");
//variable 'a' contains the string "Cl"
String b = "Cool";
b = b.replaceFirst("o","");
//variable 'b' contains the string "Col"
header = header.substring(header.startsWith("#") ? 1 : 0);
header = header.replaceFirst("^#","");
Sie können die Teilzeichenfolgenmethode der String
Klasse verwenden, die nur den Anfangsindex verwendet und die Teilzeichenfolge zurückgibt, die mit dem Zeichen am angegebenen Index beginnt und sich bis zum Ende der Zeichenfolge erstreckt.
String str = "Jamaica";
str = str.substring(1);
public String removeFirst(String input)
{
return input.substring(1);
}
Das Wichtigste in Java ist, dass Strings unveränderlich sind - Sie können sie nicht ändern. Es macht also keinen Sinn, von "Entfernen eines Zeichens aus einer Zeichenfolge" zu sprechen. Stattdessen erstellen Sie eine NEUE Zeichenfolge mit nur den gewünschten Zeichen. Die anderen Beiträge in dieser Frage bieten Ihnen verschiedene Möglichkeiten, dies zu tun. Es ist jedoch wichtig zu verstehen, dass diese die ursprüngliche Zeichenfolge in keiner Weise ändern. Alle Verweise, die Sie auf die alte Zeichenfolge haben, beziehen sich weiterhin auf die alte Zeichenfolge (es sei denn, Sie ändern sie so, dass sie auf eine andere Zeichenfolge verweisen) und werden von der neu erstellten Zeichenfolge nicht beeinflusst.
Dies hat eine Reihe von Auswirkungen auf die Leistung. Jedes Mal, wenn Sie eine Zeichenfolge "ändern", erstellen Sie tatsächlich eine neue Zeichenfolge mit dem gesamten implizierten Overhead (Speicherzuweisung und Speicherbereinigung). Wenn Sie also eine Reihe von Änderungen an einer Zeichenfolge vornehmen möchten und sich nur um das Endergebnis kümmern möchten (die Zwischenzeichenfolgen sind tot, sobald Sie sie "ändern"), ist es möglicherweise sinnvoller, stattdessen einen StringBuilder oder StringBuffer zu verwenden.
Die Methode substring () gibt einen neuen String zurück, der eine Teilsequenz von Zeichenenthält,die derzeit in dieser Sequenz enthalten sind.
Die Teilzeichenfolge beginnt bei der angegebenen start
und erstreckt sich bis zum Zeichen bei index end - 1
.
Es hat zwei Formen. Das erste ist
String substring(int FirstIndex)
Hier gibt FirstIndex den Index an, an dem die Teilzeichenfolge beginnt. Dieses Formular gibt eine Kopie der Teilzeichenfolge zurück, die bei FirstIndex beginnt und bis zum Ende der aufrufenden Zeichenfolge ausgeführt wird.
String substring(int FirstIndex, int endIndex)
Hier gibt FirstIndex den Anfangsindex und endIndex den Haltepunkt an. Die zurückgegebene Zeichenfolge enthält alle Zeichen vom Anfangsindex bis zum Endindex, jedoch ohne diesen.
String str="Amiyo";
// prints substring from index 3
System.out.println("substring is = " + str.substring(3)); // Output "yo'
Ich stieß auf eine Situation, in der ich nicht nur das erste Zeichen (wenn es ein war #
, sondern den ersten Zeichensatz) entfernen musste .
String myString = ###Hello World
könnte der Ausgangspunkt sein, aber ich würde nur das behalten wollen Hello World
. Dies könnte wie folgt erfolgen.
while (myString.charAt(0) == '#') { // Remove all the # chars in front of the real string
myString = myString.substring(1, myString.length());
}
Bei OP ersetzen Sie es while
durch if
und es funktioniert auch.
Eine andere Lösung, Sie können Ihr Problem replaceAll
mit einem regulären Ausdruck ^.{1}
( Regex-Demo ) lösen, zum Beispiel:
String str = "Jamaica";
int nbr = 1;
str = str.replaceAll("^.{" + nbr + "}", "");//Output = amaica
Meine Version zum Entfernen führender Zeichen, eines oder mehrerer. Beispiel: String str1 = "01234". Wenn Sie die führende '0' entfernen, lautet das Ergebnis "1234". Für einen String str2 = "000123" ist das Ergebnis wieder "123". Und für String str3 = "000" ist das Ergebnis ein leerer String: "". Diese Funktionalität ist häufig nützlich, wenn numerische Zeichenfolgen in Zahlen konvertiert werden. Der Vorteil dieser Lösung gegenüber Regex (replaceAll (...)) besteht darin, dass diese viel schneller ist. Dies ist wichtig, wenn Sie eine große Anzahl von Zeichenfolgen verarbeiten.
public static String removeLeadingChar(String str, char ch) {
int idx = 0;
while ((idx < str.length()) && (str.charAt(idx) == ch))
idx++;
return str.substring(idx);
}