前任
String str = "abc def ghi";
是否有任何方法str.find("abc")
可以返回我 1 并str.find("def")
返回我 2?
java语言..
这样的事情怎么样?
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 索引。
由于您不是请求子字符串的索引,而是请求子字符串属于哪个单词位置,因此没有这样的内置方法可用。但是您可以按空格字符拆分输入字符串,并读取 split 方法返回的列表中的每个项目,并检查您的子字符串属于哪个列表项目位置。
如果您需要此代码,请告诉我。
我认为这没有本机功能。但是你可以自己写。
似乎您想根据空格字符拆分字符串。
String[] parts = string.split(" ");
循环遍历创建的数组。并返回索引 + 1(因为 java 有从零开始的索引)
for(int i = 0; i < parts.length; i++)
{
if(parts[i].equals(parameter))
{
return i + 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)。