2016-08-10 34 views
0

文字列には部分文字列(許可された単語)のみを許可します。他の部分文字列を削除したい文字列の部分文字列を置換する方法Javaの空の部分文字列 ""(部分文字列を削除する)

だから私はいくつかの「ABC」、「DEF」のような単語や「GHI」などを除くすべての単語

私はこのような何かをしたいを交換したいです。 (構文が正しくありません)

入力:文字列: "次のように入力してください:"、 ":[" [^ [abc]、 " abcxyzorkdefa "許容単語{" ABC "" DEF "}

出力:" ABCDEF。

これを行うには? ありがとうございました。

+0

は、あなたがでReplaceAllを試してみました( "[^ ABC |^DEF]"、 ""); – ankidaemon

答えて

1

これはよりCのようなアプローチですが、パターンをマッチングするためにJavaのString.startsWithを使用します。このメソッドは、指定された文字列に沿って歩き、見つかった結果の結果文字列に一致するパターンを保存します。

より小さいパターンを含む長いパターンがパターン配列の前面に来るようにする必要があります("abcd"は​​の前です)。

class RemoveNegated { 
    public static String removeAllNegated(String s, List<String> list) { 
     StringBuilder result = new StringBuilder(); 
     // Move along the string from the front 
     while (s.length() > 0) { 
      boolean match = false; 
      // Try matching a pattern 
      for (String p : list) { 
       // If the pattern is matched 
       if (s.toLowerCase().startsWith(p.toLowerCase())) { 
        // Save it 
        result.append(p); 
        // Move along the string 
        s = s.substring(p.length()); 
        // Signal a match 
        match = true; 
         break; 
        } 
       } 
       // If there was no match, move along the string 
       if (!match) { 
       s = s.substring(1); 
      } 
     } 
     return result.toString(); 
    } 

    public static void main(String[] args) { 
     String s = "abcxyzorkdefaef"; 
     s = removeAllNegated(s, Arrays.asList("abc", "def", "ghi")); 
     System.out.println(s); 
    } 
} 

プリント:abcdef

+0

解決策は@Billy Brownに感謝します。大文字と小文字を区別するための編集を行いました:) –

+0

@omkarsirra大文字と小文字が区別されます。大文字小文字を区別しないという意味ですか? –

+0

申し訳ありません。うん大文字小文字の区別がありません –

関連する問題