0

この文字列があるとしましょう

String s ="stackjomvammssastackvmlmvlrstack"

そして、私の例では (index=)4 である部分文字列「stack」の最初の一致の最後のインデックスを見つけたいと思います。

どうすればいいですか?

これが私がこれまでに行ったことです

    Matcher m = pattern.matcher(s);
    int i=0;
    while (m.find())
    {    
        System.out.println(m.start());
        System.out.println(m.end());
    }

しかし、それは最後の一致の最後のインデックスを表示します。

4

7 に答える 7

6

単語の位置を見つけて、その長さを追加するだけです。

String s = "stackjomvammssastackvmlmvlrstack";
String match = "stack";
int start = s.indexOf(match);
int end = (start + match.length() - 1);
System.out.println(match + " found at index " + start);
System.out.println("Index of last character of first match is " + end);

正規表現を使用する必要がある場合、コードはソリューションに近いです-これを行うことができます:

String s = "stackjomvammssastackvmlmvlrstack";
String match = "s.*?k";
Matcher m = Pattern.compile(match).matcher(s);
if (m.find()) {
    System.out.println(m.end() - 1);
}
于 2013-03-08T12:34:38.930 に答える
1

このコードを試してください:

if (m.find())
        System.out.println(m.end() - 1);

Matcher.end() の Java doc から:

Returns the offset after the last character matched. 
于 2013-03-08T12:43:03.490 に答える
0

私があなたの質問を正しく理解していれば、「スタック」の最初の一致を見つけて、最後のインデックスを取得しようとしています....

これを行うには、次のようにします。

string toFind = "stack";
int firstOccurance = s.indexOf(toFind); (being s the word you posted above)
int whatYourLooking = firstOccurance + toFind.length() - 1; 

それが役に立てば幸い!;)

于 2013-03-08T12:35:32.563 に答える
0

こちらです?

String s ="stackjomvammssastackvmlmvlrstack";
String word = "stack";
int index = s.indexOf(word) + word.length() - 1;
于 2013-03-08T12:35:47.240 に答える
0
final String input = "stackjomvammssastackvmlmvlrstack";
final String stack = "stack";
int start = input.indexOf(stack);
int end = start + stack.length() - 1;
于 2013-03-08T12:36:14.323 に答える
0
String s = "stackjomvammssastackvmlmvlrstack";

文字列スタック = "スタック"; int インデックス = s.indexOf(スタック) + スタック.長さ();

于 2013-03-08T12:36:54.560 に答える
-1

以前の回答を編集しました

  String s ="stackjomvammssastackvmlmvlrstack";      
  String pattern = "stack";

Matcher m = pattern.matcher(s);
int i=0;
while (m.find())
{    
    System.out.println(m.start());
    System.out.println(m.start()+m.length());
}
于 2013-03-08T12:34:24.007 に答える