Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 查找子字符串在字符串中的位置(非indexOf)_Java_String_Position_Substring - Fatal编程技术网

Java 查找子字符串在字符串中的位置(非indexOf)

Java 查找子字符串在字符串中的位置(非indexOf),java,string,position,substring,Java,String,Position,Substring,前 是否有类似于str的方法。find(“abc”)将返回我1 并且str.find(“def”)将返回我2 java语言..像这样的东西怎么样 String str = "abc def ghi"; 免责声明:这根本没有效率。每次调用函数时,它都会从头开始拆分整个字符串 测试代码: int getIndex(String str, String substring) { return Arrays.asList(str.split("\\s+")).indexOf(substring)+

是否有类似于
str的方法。find(“abc”)
将返回我1 并且
str.find(“def”)
将返回我2


java语言..

像这样的东西怎么样

String str = "abc def ghi";
免责声明:这根本没有效率。每次调用函数时,它都会从头开始拆分整个字符串

测试代码:

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"));
打印:

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"));
说明:

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"));
str.split(\\s+”)
按空格分隔字符串,并将每个部分放入数组中的一个位置

Arrays.asList
返回数组的
ArrayList

indexOf(substring)
ArrayList
中查找字符串的位置


+1
由于Java使用0索引,而您需要1索引。

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


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

我认为没有用于此的本机函数。但是你可以自己写

似乎要根据空格字符拆分字符串

1
2
循环创建的数组。并返回索引+1(因为java有基于零的索引)

for(int i=0;i
如果要查找同一字符串的多个位置,请尝试此代码

for(int i = 0; i < parts.length; i++)
{
  if(parts[i].equals(parameter))
  {
     return i + 1;
  }
}

答案将返回indexValues=(2,7,12)。

+1表示一行代码,但扩展代码可能会使OP更具可读性。@Marc将代码加长似乎是一种浪费。我希望添加的解释能让它足够可读。-1很好的解释,但是你总是需要在答案中显示代码,否则这只是一个很长的注释。谢谢你宝贵的反馈。我将保证这一点。@RGraham确信代码通常有助于更好地解释。但我不同意人们总是需要在答案中添加代码。OP指南也是一个很好的答案。