2016-05-20 26 views
-3

文字列内の文字列(この場合はffg)を見つけ出す必要があります。シーケンスが見つかると前後の文字を返します。文字列内の文字列を見つける

私はmatch.find()を使用してこの方法を見つけることができますが、位置を返し、そこに格納されている文字が必要です。

16 ffg 20 
34 ffg 38 
47 ffg 51 
60 ffg 64 

と私は必要があります:

この出力は元に戻りオフセットを

import java.util.regex.Matcher; 
import java.util.regex.Pattern; 

public class Testes { 

public static void main(String[]args){ 

     String text = "aaddbsanklfafjdkgffgkakfjkldsjlkfjdffgkaskdlfkdkffgasjdaeflkaffgaff"; 

     String wordToFind = "ffg"; 


     Pattern word = Pattern.compile(wordToFind); 
     Matcher match = word.matcher(text); 

     while (match.find()) { 

      System.out.print(match.start() - 1); 
      System.out.print(" " + wordToFind + " "); 
      System.out.println(match.end()); 

     } 

    } 
} 
+1

'String.charAt(match.start() - 1)'? –

+0

投稿したコードの問題点は何ですか? – tnw

答えて

1

.start()と.END():

g ffg k 
d ffg k 

コードは以下の文字列。それらをオフセットしたい場合は、おそらく.substring(元の文字列)を使用したいと思うでしょう。

0

出力

g ffg k 
d ffg k 
k ffg a 
a ffg a 

コード

import java.util.regex.Matcher; 
import java.util.regex.Pattern; 

public class Testes { 
    public static void main(String[] args) { 
     String text = "aaddbsanklfafjdkgffgkakfjkldsjlkfjdffgkaskdlfkdkffgasjdaeflkaffgaff"; 

     String wordToFind = "ffg"; 

     Pattern word = Pattern.compile(wordToFind); 
     Matcher match = word.matcher(text); 

     while (match.find()) { 
      System.out.print(text.charAt(match.start() - 1)); 
      System.out.print(" " + wordToFind + " "); 
      System.out.println(text.charAt(match.end())); 
     } 
    } 
} 
+0

ありがとう、私はJavaで新しい、ちょうど2週間前に開始します。ありがとう – junior

0

ので、あなたは、文字列"aaddbsanklfafjdkgffgkakfjkldsjlkfjdffgkaskdlfkdkffgasjdaeflkaffgaff""ffg"を見つけたいです。

最初に行うことは、私たちが使用するPatternMatcherオブジェクトを作成することです。

Pattern word = Pattern.compile(wordToFind); 
Matcher match = word.matcher(text); 

ほとんどの場合、必要なインデックスの文字を取得するための呼び出しとは別に、必要なものがすべて用意されています。次のコードスニペットは、必要な出力を生成します。

出力

g ffg k                                  
d ffg k                                  
k ffg a                                  
a ffg a 

これはコードです...

public static void main(String[] args) { 
    String text = "aaddbsanklfafjdkgffgkakfjkldsjlkfjdffgkaskdlfkdkffgasjdaeflkaffgaff"; 

    String wordToFind = "ffg"; 

    Pattern word = Pattern.compile(wordToFind); 
    Matcher match = word.matcher(text); 

    // keep searching while there are instances 
    // of `wordToFind` in the string 
    while (match.find()) { 
     // index before the wordToFind starts 
     int startIndx = match.start() - 1; 
     System.out.print(text.charAt(startIndx)); 

     System.out.print(" "); 

     // print word 
     System.out.print(wordToFind); 

     System.out.print(" "); 

     // index where wordToFind ends 
     int endIndx = match.end(); 
     System.out.println(text.charAt(endIndx)); 

    }  
} 
関連する問題