How to check if a string contains a WORD in javascript?
因此,可以使用.includes()方法轻松检查字符串是否包含特定的子字符串。
我想知道一个字符串是否包含一个词。
例如,如果我为字符串"phones are good"应用"on"搜索,它应该返回false。而且,它应该返回真的"放在桌子上"。
首先需要使用
1 | string.split("").includes("on") |
只需要把空白的
你可以用空格(
1 2 3 4 5 | const hasWord = (str, word) => ((s) => s.has(word))(new Set(str.split(/\s+/))) console.log(hasWord("phones are good","on")); console.log(hasWord("keep it on the table","on")); |
如果您担心标点符号,可以先使用
1 2 3 4 5 | const hasWord = (str, word) => ((s) => s.has(word))(new Set(str.replace(/[.,\/#!$%\^&\*;:{}=\-_`~()]/g,"").split(/\s+/))) console.log(hasWord("phones are good","on")); console.log(hasWord("keep it on, the table","on")); |
。
这被称为regex-正则表达式
你可以使用101regex网站,当你需要解决他们(它有帮助)。带有自定义分隔符的单词。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | function checkWord(word, str) { const allowedSeparator = '\\\s,;"\'|'; const regex = new RegExp( `(^.*[${allowedSeparator}]${word}$)|(^${word}[${allowedSeparator}].*)|(^${word}$)|(^.*[${allowedSeparator}]${word}[${allowedSeparator}].*$)`, // Case insensitive 'i', ); return regex.test(str); } [ 'phones are good', 'keep it on the table', 'on', 'keep iton the table', 'keep it on', 'on the table', 'the,table,is,on,the,desk', 'the,table,is,on|the,desk', 'the,table,is|the,desk', ].forEach((x) => { console.log(`Check: ${x} : ${checkWord('on', x)}`); }); |
说明:
我在这里为每个可能创建多个捕获组:
最后一个词是
只有一个词是
1 2 3 4 5 6 7 8 | const regex = /(^.*\son$)|(^on\s.*)|(^on$)|(^.*\son\s.*$)/i; console.log(regex.test('phones are good')); console.log(regex.test('keep it on the table')); console.log(regex.test('on')); console.log(regex.test('keep iton the table')); console.log(regex.test('keep it on')); console.log(regex.test('on the table')); |
。
一个简单的版本可能只是在空白处进行拆分,并在结果数组中查找单词:
1 2 3 | "phones are good".split("").find(word => word ==="on") // undefined "keep it on the table".split("").find(word => word ==="on") //"on" |
不过,这只是按空白分割,当需要解析文本(取决于您的输入)时,您会遇到比空白更多的单词分隔符。在这种情况下,可以使用regex来解释这些字符。比如:
1 | "Phones are good, aren't they? They are. Yes!".split(/[\s,\?\,\.!]+/) |
。
您可以拆分,然后尝试查找:
1 2 3 | const str = 'keep it on the table'; const res = str.split(/[\s,\?\,\.!]+/).some(f=> f === 'on'); console.log(res); |
号
此外,
您可以使用
尝试以下操作-
1 2 3 4 5 6 7 8 | var mainString = 'codehandbook' var substr = /hand/ var found = substr.test(mainString) if(found){ console.log('Substring found !!') } else { console.log('Substring not found !!') } |
。
使用
1 2 | console.log("keep it on the table".toLowerCase().split("").includes("on")); // true console.log("phones are good".toLowerCase().split("").includes("on")); // false |
。
或者可以使用正则表达式。
我将遵循以下假设:
因此,我将编写以下代码:
1 2 3 4 5 6 7 8 | function containsWord(word, sentence) { return ( sentence.startsWith(word.trim() +"") || sentence.endsWith("" + word.trim()) || sentence.includes("" + word.trim() +"")); } console.log(containsWord("test","This is a test of the containsWord function.")); |