0

必要な出力を取得するにはどうすればよいですか?

入力文字列:

 " software Company(1920 of 1897 ) IBM region(sb2). region(sb3)

検索する単語 -

"software company(1920)"

出力

ソフトウェア会社 (1920) IBM.IBM 地域 (sb2)。地域(sb3)

要するに、フレーズを見つけて、同じフレーズをアスタリスク (*) の開始と終了に置き換え、大文字と小文字を区別せず、正確な世界を一致させる必要があります。

4

5 に答える 5

1

次のように実行できます。

    String str = "software Company (1920) IBM. software company (1920) TCS. SOftware Company (1920) HSBC. SOFTWARE COMPANY (1920) INFOSYS";

    Pattern p = Pattern.compile("(?i)(software company \\(1920\\))");
    Matcher matcher = p.matcher(str);
    while(matcher.find()) {
        String curStr = matcher.group();
        str = str.replace(curStr,"*"+curStr+"*");
    }
    System.out.println(str);
于 2012-10-18T05:17:53.260 に答える
1

これを使用してみてくださいBackReference

     String inputString = " software Company(1920) IBM. software company (1920)"+
           "TCS. SOftware Company (1920) HSBC. SOFTWARE COMPANY (1920) INFOSYS ";
     String patternStr = "([[a-zA-Z]{2}ftware Company\\([0-9]{4}\\)]{24})";
     Pattern pattern = Pattern.compile(patternStr );
     Matcher matcher = pattern.matcher(inputString);
     System.out.println(matcher.replaceAll("*$1*"));
于 2012-10-18T05:35:02.113 に答える
0

私は Java の経験が数年しかないので、誰かが間違っていたら訂正してString inputくださいinput.indexOf([words to be searched])。インデックスを取得したら、subString()メソッドを使用するだけで、テキスト全体を小さな断片に分割し、アスタリスクを追加してから、すべてを連結して元に戻すことができます。

于 2012-10-18T04:39:24.563 に答える
0

CASE_INSENSITIVEパターンのコンパイル中に機能を使用する

String input = "Software company (1988)";
    Pattern pattern = Pattern.compile("software company \\([1-9][0-9]{3}\\)",Pattern.CASE_INSENSITIVE);
    Matcher matcher = pattern.matcher(input);
    if (matcher.matches())
    {
            System.out.println("*" + matcher.group(0) + "*");
    }

group(0)一致したパターン全体を返します。

于 2012-10-18T04:59:37.323 に答える