3

String str = "abc def ghi";

str.find("abc")私に1を返し、私に2を返すような方法はありますstr.find("def")か?

ジャバ言語..

4

4 に答える 4

7

How about something like this?

int getIndex(String str, String substring)
{
  return Arrays.asList(str.split("\\s+")).indexOf(substring)+1;
}

Disclaimer: This isn't at all efficient. It splits the whole string from scratch every time the function is called.

Test code:

String str = "abc def ghi";
System.out.println(getIndex(str, "abc"));
System.out.println(getIndex(str, "def"));

Prints:

1
2

Explanation:

str.split("\\s+") splits the string by white-space and puts each part into a position in an array.

Arrays.asList returns an ArrayList for the array.

indexOf(substring) finds the position of the string in the ArrayList.

+1 since Java uses 0-indexing and you want 1-indexing.

于 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 に答える