2017-05-09 22 views
0

this postは2つの配列を互いに非常によく比較する方法を示しています。しかし、 "20394875apple29038475"や "i love apples"のようなユーザーからの入力文字列があり、大文字/小文字に関係なく文字列配列の文字列がユーザーの指定した文字列に存在するかどうかをチェックしたい私はグルーヴィーでこれを行うことができますか?配列の要素にGroovyの指定された文字列が含まれていないか確認してください

果物のような果物(「リンゴ」、「バナナ」、「チェリー」)をチェックする文字列を想像してみましょう。この場合

ストリング「りんご」は、ユーザー指定の文字列中に存在しているので、我々はtrueを返しますが、「20394875apple29038475」

...私は最善の方法は、このようなものになるだろうことを考えていますが

を?:します
boolean fruitFound = false 

for (item in fruitArray){ 
    if(usrResponse.contains(item)){ 
     responseFound = true 
    } 
+0

の可能性のある重複した[Groovyの:文字列は配列の任意の要素が含まれているかどうかを確認する方法は?](http://stackoverflow.com/questions/27069701/groovy-how -to-check-if-a-string-any-of-arrayを含む) - 同じ回答が適用されます。 – doelleri

+0

実際には別の2つの配列を比較していないので、文字列@doelleriのケースを無視しようとしているので、別の質問 – JonathanScialpi

答えて

2
fruitFound = fruitArray.any{usrResponse.contains(it)} 
+0

ありがとう@Admiral_xこれも無視されますか?だから、ユーザーが "ApPLe"を入力した場合でも、 "appleが大好きです"というfruitArray要素との一致が見つかりますか? – JonathanScialpi

+0

あなたは大丈夫ですよね、大文字と小文字を区別します。あなたは以下のようにすることができます:fruitArray.any {usrResponse.toLowerCase()。contains(it.toLowerCase())} –

0

チェックこの:

def fruits = ["apple","banana","cherry"] 
def str = '20394875banana29038475' 
assert fruits.findAll{str.contains(it)}.any{true} 

EDIT:無視する場合

assert fruits.findAll{str.toLowerCase().contains(it.toLowerCase())}.any{true} 

または

assert fruits*.toLowerCase().findAll{str.toLowerCase().contains(it)}.any{true} 
+0

ありがとう@Rao。これも無視されますか?だから、ユーザーが "ApPLe"を入力した場合でも、 "appleが大好きです"というfruitArray要素との一致が見つかりますか? – JonathanScialpi

+0

@JonathanScialpi、編集を確認してください。 – Rao

関連する問題