2017-11-15 15 views
-2

2 개의 문자열을 비교해야합니다. 와일드 카드 문자가 있습니까?자바 스크립트에서 문자열을 비교하는 동안 와일드 카드

와일드 카드가없는 경우 어떻게해야합니까? 비교할 문자열은 ','로 구분 된이 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 또한 작성한 코드 자바입니다 : 자바 스크립트에는 네이티브'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

정규식의 .* 연산자는 아무것도 일치합니다. 이 방법을 사용하면 값과 패턴을 구별해야합니다. 즉, 검사 할 문자열과 검사 할 패턴 (여기서는 정규 표현식으로 나타냄)이 있습니다.

패턴과 비교하는 경우 정규식 (처음 두 가지 예)을 사용하십시오. 두 값을 비교하는 경우 === 연산자로 직접 수행하십시오 (마지막 예).

+1

Bergi가 정확하게 지적했듯이'.test()'는 boolean을 반환하기 때문에 더 낫습니다. ('!!') 할 필요가 없습니다. – msanford

+1

@msanford 좋은 지적! 나는 그것을 반영하기 위해 게시물을 편집했습니다. – CRice

+0

예. 원래의 코멘트를 보았을 때'match() '열차에 너무 빨리 도착했습니다. :) – msanford