离
String str = "abc def ghi";
是否有像str.find("abc")
这样的方法会让我1
而str.find("def")
会让我回复2?
java语言..
答案 0 :(得分:7)
这样的事情怎么样?
int getIndex(String str, String substring)
{
return Arrays.asList(str.split("\\s+")).indexOf(substring)+1;
}
免责声明:这根本不高效。每次调用函数时,它都会从头开始分割整个字符串。
测试代码:
String str = "abc def ghi";
System.out.println(getIndex(str, "abc"));
System.out.println(getIndex(str, "def"));
<强>打印强>
1
2
<强>解释强>
str.split("\\s+")
将字符串拆分为空格,并将每个部分放入数组中的位置。
Arrays.asList
为数组返回ArrayList
。
indexOf(substring)
在ArrayList
。
+1
因为Java使用0索引而你想要1索引。
答案 1 :(得分:1)
由于您没有请求子字符串的索引,而是请求子字符串属于哪个字位置,因此没有可用的内置方法。但是您可以按空格字符拆分输入字符串并读取split方法返回的列表中的每个项目,并检查子字符串所属的列表项位置。
如果您需要此代码,请告诉我。
答案 2 :(得分:1)
我不认为这有本机功能。但你可以写自己的。
好像你想根据空格字符拆分字符串。
String[] parts = string.split(" ");
循环创建的数组。并返回索引+ 1(因为java有零基索引)
for(int i = 0; i < parts.length; i++)
{
if(parts[i].equals(parameter))
{
return i + 1;
}
}
答案 3 :(得分:1)
如果您希望找到相同字符串的多个位置,请尝试使用此代码。
//Returns an array of integers with each string position
private int[] getStringPositions(String string, String subString){
String[] splitString = string.split(subString); //Split the string
int totalLen = 0; //Total length of the string, added in the loop
int[] indexValues = new int[splitString.length - 1]; //Instances of subString in string
//Loop through the splitString array to get each position
for (int i = 0; i < splitString.length - 1; i++){
if (i == 0) {
//Only add the first splitString length because subString is cut here.
totalLen = totalLen + splitString[i].length();
}
else{
//Add totalLen & splitString len and subStringLen
totalLen = totalLen + splitString[i].length() + subString.length();
}
indexValues[i] = totalLen; //Set indexValue at current i
}
return indexValues;
}
例如:
String string = "s an s an s an s"; //Length = 15
String subString = "an";
答案会返回indexValues =(2,7,12)。