2017-08-23 1 views
1

私は2つの文字列str、str2を持っています。両方の文字列にスペースがあります。私はを使用しました。メソッドが含まれていますが、正確な文字のみをチェックするため、ここでは適合しません。 1つの文字列が部分文字列かどうかを確認する方法Stringに空白で区切られた部分文字列が含まれていることを確認してください。

私は以下のコードを使用して実装しました。文字列 "FOO BAR"が元のStringに存在する場合、コード内の関数はtrueを出力します。

public static void main(String[] args) { 
     String str = "FOO BAR"; 
     String str1 = "FOO T BAR"; 
     String orignialString; 
     String stringToMatch; 
     if (str1.length() > str.length()) { 
      orignialString = str1; 
      stringToMatch = str; 
     } else { 
      orignialString = str1; 
      stringToMatch = str; 
     } 
     boolean flag = false; 
     String[] stringarr = stringToMatch.split(" "); 
     for (int i = 0; i < stringarr.length; i++) { 
      if (orignialString.contains(stringarr[i])) { 
       flag = true; 
      } else { 
       flag = false; 
       break; 
      } 
     } 
     System.out.println("IS SUBSTRING---> " + flag);    
    } 

パターンマッチャー/ REGEXを使用して、よりクリーンなショートコードを探しています。

+0

参照[Javaで文字列から空白を削除](https://stackoverflow.com/questions/5455794/removing-whitespace-from-strings-in-java)。 –

+0

Regexpは、ある文字列が別の文字列に含まれているかどうかを教えません。文字列がいくつかのルールにマッチするかどうかを判断します。あなたの例の中のstrが動的に変更された場合、regexpは助けになりません。 –

+0

[java.util.regex。*?]と部分一致を実行するにはどうすればよいですか(https://stackoverflow.com/questions/2469231/how-can-i-perform-a-partial-match-with-java- util-regex)最初の2つの答えはあなたが探しているものでしょうか? –

答えて

1

この回答は、FOO BARを部分文字列FOO T BARとして識別したいと仮定しています。前者のすべての単語も後者の単語として存在するためです。このロジックを使用して、2つの文字列のそれぞれから単語のリストを作成し、すべての単語が存在することを確認するために繰り返します。

boolean isSub = true; 
String str = "FOO T BAR"; 
String str1 = "FOO BAR"; 
List<String> strList = Arrays.asList(str.split("\\s+")); 
List<String> strSubList = Arrays.asList(str1.split("\\s+")); 
for (String sub : strSubList) { 
    if (!strList.contains(sub)) { 
     isSub = false; 
    } 
} 

System.out.println("input is a substring: " + isSub); 

Demo

+0

Guys?ダウンフォース? –

+0

コードは長さに関係なく実行され、問題文を見て、長さが重要です。同様に、str1を 'FOO TAN BAR'&str 'FOO BAR'とすると、コードが失敗します。 –

+0

@AnkitaGoyal私の理解では、 'FOO BAR'は' FOO TAN BAR'のすべての単語を含んでいないので、あなたの例文は失敗するはずです。 –

関連する問題