2017-11-15 21 views
-2

2文字列を比較する必要があります。ワイルドカード文字はありますか?JavaScriptで文字列を比較する際のワイルドカード

ワイルドカードがない場合、どうすればよいですか?比較する文字列は、このHHH-H-HHHのように部分文字列を '、'で区切って連結したものです。

例:

var str1 = "HHH-H-HHH,OOO-O-OOO" 

var str2 = "HHH-$-HHH,OOO-O-OOO" 

var str3 = "HHH-H-HHH,OOO-$-OOO" 

var str4 = "HHH-H-HHH,OOO-U-OOO" 

str1.equals(str2) // SHOULD BE TRUE 

str1.equals(str3) // SHOULD BE TRUE 

str1.equals(str4) // SHOULD BE FALSE 
+2

https://regexone.com/lesson/wildcards_dotおよびhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/matchさらに、あなたが書いたコードJava:JavaScriptには、ネイティブの 'String.prorotype.equals()'メソッドはありません。 – msanford

+2

@msanford https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/test – Bergi

答えて

2

使用正規表現:それはあなたのワイルドカードですので、正規表現で

var str1 = "HHH-H-HHH,OOO-O-OOO" 
 
var str2 = "HHH-H-HHH,OOO-U-OOO" 
 

 
var rgx1 = /HHH-.*-HHH,OOO-O-OOO/ 
 
var rgx2 = /HHH-H-HHH,OOO-.*-OOO/ 
 

 
console.log(rgx1.test(str1)) // SHOULD BE TRUE 
 
console.log(rgx2.test(str1)) // SHOULD BE TRUE 
 
console.log(str1 === str2) // SHOULD BE FALSE

.*オペレータは、何も一致します。この方法では、値とパターンを区別する必要があります。つまり、チェックしたい文字列と、それらをチェックしたいパターン(ここでは正規表現で表現されます)があります。

パターンと比較する場合は、正規表現(最初の2つの例)を使用します。 2つの値を比較する場合は、===演算子を使用して直接実行してください(最後の例)。

+1

Bergiが正しく指摘したように、 '.test()'はブール値(そうする必要はない '!!')。 – msanford

+1

@msanford良い点!私はそれを反映するために投稿を編集しました。 – CRice

+0

元のコメントが表示されたら、 'match() '列車にも早く乗ってしまった。 :) – msanford

関連する問題