2016-05-17 11 views
0

文字列の部分文字列を検索する必要があります。トリックは: - 私は心配していない1文字です。 - 手紙には手紙が1つ必要ですが、手紙には関係ありません。 - 文字が "I" である文字列と比較すると、その"DO NOT CARE FLAG"を含む文字列の部分文字列を検索

したがって、例えばsubsrting "MQINEEIR"は:

- "MQINEEIR" - match, same 
- "MQINEELR" - match, one I is L the othe is L 
- "MQLNEELR" - match, both I are L 
- MQXNEEIR - match becouse X stand for I, but ideally I would like to allow only L. But for simplicity, I will allow it. 

しかし

  • "MQINEER" と一致しません私が行方不明で、それを表す手紙ではないので。 R insteadof Xがあるbecouse
    • MQINEEIXが一致していない、と私は私だけ
私が思う

の変動を許容する、これはをマッチングパターンを使って解くことができ、私が、方法がわかりません?

String s = "MQLNEELR"; 
System.out.println(s.matches("MQ.NEE.R")); 

正規表現を理解する価値が考えられます。

+0

マッチの条件をよりよく説明する必要があります。あまりにも多くの不特定の可能性がある。たとえば、ターゲットが 'MQINEEIX'の場合はどうでしょうか?または 'MQXNEEIR'? 'MQINEEIRX'はどうですか? –

+0

あなたの質問は本当に明確ではありません。文字列 'MQINEEIR'にマッチさせようとしていますか?' I'と 'L'は互いに置き換えられますか?私は正規表現に身近にすることをお勧めします – user1875195

+0

いいえ、正規表現はこれを解決しません。 –

答えて

3

String.matches(String)方法を試してみてください。

+0

申し訳ありません... "MQLNEELR"は例です。 "MQLNEELR"のように任意の文字列にすることができます。変数になります。 「。」を挿入できない限り文字列に "I"が表示されるたびに。 – user836026

+0

または、部分文字列を一致させる必要がある場合は、この 'Matcher m = Pattern.compile(" MQ.NEE.R ")。matcher(s)'のようなマッチャーを作成し、 'm.find()'でスキャンします。 – Rinke

+0

@ user836026だから、それを変数にしてください。また、小文字のLまたは大文字のIのいずれかにマッチするだけに興味がある場合は、そのドットを '[I]'に置き換えることができます。正規表現は本当にクールです、あなたはそれが好きかもしれません。 – Rinke

関連する問題