3

前任

String str = "abc def ghi";

是否有任何方法str.find("abc")可以返回我 1 并str.find("def")返回我 2?

java语言..

4

4 回答 4

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 索引。

于 2013-09-17T08:34:38.573 回答
1

由于您不是请求子字符串的索引,而是请求子字符串属于哪个单词位置,因此没有这样的内置方法可用。但是您可以按空格字符拆分输入字符串,并读取 split 方法返回的列表中的每个项目,并检查您的子字符串属于哪个列表项目位置。

如果您需要此代码,请告诉我。

于 2013-09-17T08:38:12.947 回答
1

我认为这没有本机功能。但是你可以自己写。

似乎您想根据空格字符拆分字符串。

String[] parts = string.split(" ");

循环遍历创建的数组。并返回索引 + 1(因为 java 有从零开始的索引)

for(int i = 0; i < parts.length; i++)
{
  if(parts[i].equals(parameter))
  {
     return i + 1;
  }
}
于 2013-09-17T08:43:09.993 回答
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)。

于 2018-01-06T22:39:29.087 回答