꽤 직설적 인. 자바 스크립트에서 문자열에 배열에 포함 된 하위 문자열이 포함되어 있는지 확인해야합니다.
답변
당신을 위해 그것을 할 내장 기능은 없습니다, 당신은 그것을위한 함수를 작성해야합니다.
당신이 경우 알 문자열이 정규 표현식에서 특별 문자 중 하나를 포함하지 않는, 당신은이 같은 비트를 속일 수 있습니다 :
if (new RegExp(substrings.join("|")).test(string)) {
// At least one match
}
… 당신이 찾고있는 하위 문자열에 대한 일련의 대안 인 정규 표현식을 만들고 (예 one|two
🙂 일치하는 항목이 있는지 테스트하지만 하위 문자열 중 하나에 특수 문자가 포함되어 있는지 테스트 정규식 ( *
, [
등)에서는 먼저 탈출해야하며 대신 지루한 루프를 수행하는 것이 좋습니다.
라이브 예 :
이 질문에 대한 의견에서 Martin 은 Array.prototype.map
ECMAScript5 의 새로운 방법에 대해 묻습니다 . map
그다지 도움이되지는 않지만 다음 some
과 같습니다.
if (substrings.some(function(v) { return str.indexOf(v) >= 0; })) {
// There's at least one
}
라이브 예 :
ECMAScript5 호환 구현에서만 사용할 수 있지만 polyfill에는 쉽지 않습니다.
2020 년 업데이트 : some
화살표 기능 (ES2015 +)으로 예제가 더 간단 할 수 있으며 다음 includes
대신에 사용할 수 있습니다 indexOf
.
if (substrings.some(v => str.includes(v))) {
// There's at least one
}
라이브 예 :
bind
나에게 화살표 기능을 훨씬 더 읽을 수 있지만 그것을 던지 십시오.
if (substrings.some(str.includes.bind(str))) {
// There's at least one
}
라이브 예 :
답변
var yourstring = 'tasty food'; // the string to check against
var substrings = ['foo','bar'],
length = substrings.length;
while(length--) {
if (yourstring.indexOf(substrings[length])!=-1) {
// one of the substrings is in yourstring
}
}
답변
한 줄 솔루션
substringsArray.some(substring=>yourBigString.includes(substring))
true\false
부분 문자열 인 경우 반환exists\does'nt exist
ES6 지원 필요
답변
function containsAny(str, substrings) {
for (var i = 0; i != substrings.length; i++) {
var substring = substrings[i];
if (str.indexOf(substring) != - 1) {
return substring;
}
}
return null;
}
var result = containsAny("defg", ["ab", "cd", "ef"]);
console.log("String was found in substring " + result);
답변
인터넷 검색을하는 사람들에게
확실한 대답이되어야합니다.
const substrings = ['connect', 'ready'];
const str = 'disconnect';
if (substrings.some(v => str === v)) {
// Will only return when the `str` is included in the `substrings`
}
답변
var str = "texttexttext";
var arr = ["asd", "ghj", "xtte"];
for (var i = 0, len = arr.length; i < len; ++i) {
if (str.indexOf(arr[i]) != -1) {
// str contains arr[i]
}
}
편집 : 테스트 순서가 중요하지 않으면 루프 변수를 하나만 사용하여 이것을 사용할 수 있습니다.
var str = "texttexttext";
var arr = ["asd", "ghj", "xtte"];
for (var i = arr.length - 1; i >= 0; --i) {
if (str.indexOf(arr[i]) != -1) {
// str contains arr[i]
}
}
답변
배열이 크지 않으면을 사용하여 개별적으로 각 하위 문자열에 대해 문자열을 반복 확인 할 수 있습니다 indexOf()
. 또는 대안으로 하위 문자열을 사용하여 정규 표현식을 작성할 수 있습니다.