Ex
String str = "abc def ghi";
Gibt es eine Methode wie str.find("abc")
, die mir 1 zurückgibt und str.find("def")
mir 2 zurückgibt?
Programmiersprache Java..
Ex
String str = "abc def ghi";
Gibt es eine Methode wie str.find("abc")
, die mir 1 zurückgibt und str.find("def")
mir 2 zurückgibt?
Programmiersprache Java..
Wie wäre es mit so etwas?
int getIndex(String str, String substring)
{
return Arrays.asList(str.split("\\s+")).indexOf(substring)+1;
}
Haftungsausschluss: Dies ist überhaupt nicht effizient. Es teilt den gesamten String jedes Mal, wenn die Funktion aufgerufen wird, neu auf.
Testcode:
String str = "abc def ghi";
System.out.println(getIndex(str, "abc"));
System.out.println(getIndex(str, "def"));
Druckt:
1
2
Erklärung:
str.split("\\s+")
teilt den String durch Leerzeichen auf und setzt jeden Teil an eine Position in einem Array.
Arrays.asList
gibt ein ArrayList
für das Array zurück.
indexOf(substring)
findet die Position des Strings in der ArrayList
.
+1
da Java 0-Indexierung verwendet und Sie 1-Indexierung möchten.
Da Sie nicht nach dem Index eines Teilstrings fragen, sondern nach welcher Wortposition der Teilstring gehört, steht keine entsprechende integrierte Methode zur Verfügung. Sie können jedoch den Eingabestring nach Leerzeichen aufteilen und jedes Element in der von der split-Methode zurückgegebenen Liste durchlaufen und überprüfen, an welcher Listenposition sich Ihr Teilstring befindet.
Lassen Sie mich wissen, wenn Sie Code dafür benötigen.
Ich glaube nicht, dass es eine native Funktion dafür gibt. Aber Sie könnten Ihre eigene schreiben.
Es scheint, als wollten Sie den String anhand des Leerzeichens aufteilen.
String[] parts = string.split(" ");
Laufen Sie durch das erstellte Array. Und geben Sie den Index + 1 zurück (da Java nullbasierte Indizes hat).
for(int i = 0; i < parts.length; i++)
{
if(parts[i].equals(parameter))
{
return i + 1;
}
}
Wenn Sie mehrere Positionen des gleichen Strings finden möchten, versuchen Sie diesen Code.
//Gibt ein Array von Ganzzahlen mit jeder Zeichenposition zurück
private int[] getStringPositions(String string, String subString){
String[] splitString = string.split(subString); //String aufsplitten
int totalLen = 0; //Gesamtlänge des Strings, im Schleifendurchlauf hinzugefügt
int[] indexValues = new int[splitString.length - 1]; //Vorkommen von subString im String
//Schleife durch das splitString-Array, um jede Position zu erhalten
for (int i = 0; i < splitString.length - 1; i++){
if (i == 0) {
//Nur die Länge des ersten splitString hinzufügen, weil subString hier abgeschnitten wird.
totalLen = totalLen + splitString[i].length();
}
else{
// totalLen & splitString Länge und subString Länge hinzufügen
totalLen = totalLen + splitString[i].length() + subString.length();
}
indexValues[i] = totalLen; //Setze indexValue für aktuelles i
}
return indexValues;
}
Also zum Beispiel:
String string = "s an s an s an s"; //Länge = 15
String subString = "an";
Die Antwort würde indexValues = (2, 7, 12) zurückgeben.
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.