2016-04-20 1 views
0

n番目の単語の前にある文章の文字数を見つける最も簡単な方法は何ですか?Javaのn番目の単語までの文字数を確認しますか?

たとえば、 :

String sentence = "Mary Jane and Peter Parker are friends." 
int trigger = 5; //"Parker" 

出力= 20

文字カウントすべてのヘルプは理解されるであろうことになります。おかげさまで

答えて

1

最も簡単な方法は、文字列内の文字をループし、空白の数を数えることです。

以下は、すべての文字に変数lengthを増やします。空白に遭遇すると、読み取る残りの空白の数を減らし、その数が1に達すると、我々が望む単語にヒットしたことを意味するので、ループから抜け出す。正規表現を使用して

public static void main(String[] args) { 
    String sentence = "Mary Jane and Peter Parker are friends."; 
    int trigger = 5; //"Parker" 

    int length = 0; 
    for (char c : sentence.toCharArray()) { 
     if (trigger == 1) break; 
     if (c == ' ') trigger--; 
     length++; 
    } 
    System.out.println(length); // prints 20 
} 
0

は次のように行うことができます。

public static void main(String[] args) { 
    String sentence = "Mary Jane and Peter Parker are friends."; 
    int trigger = 5; 

    Pattern pattern = Pattern.compile(String.format("(?:\\S+\\s+){%d}(\\S+)", trigger - 1)); 
    Matcher matcher = pattern.matcher(sentence); 
    matcher.find(); 
    System.out.println(matcher.group().lastIndexOf(" ") + 1); 
} 

私は正確な仕事を見つけるの代わりに、単にindexOf("Parker")ため、重複の可能性のすべてのトラブルを通過しています。

正規表現は、N + 1語をキャプチャしてキャプチャせずにN語にマッチします。あなたの場合は、それはあなたが望むものまですべての前の言葉に一致し、次の言葉を捉えるでしょう。

1
public int getNumberOfCharacters(int nthWord){ 
    String sentence = "Mary Jane and Peter Parker are friends."; 

    String[] wordArray = sentence.split(" "); 
    int count = 0; 
    for(int i=0; i<=nthWord-2 ; i++){ 
     count = count + wordArray[i].length(); 
    } 

    return count + (nthWord-1); 

}` 

それは

を動作するはずです、これを試してください
関連する問題