我有一个数组,我通过逐个单词地提取并比较它们以找到大文本中的任何匹配项来进行循环。
var myString="I know the languages C, C# and JAVA"
var languages=['JAVA','C','Angular','C++','Python','C#'];
for (var i=0;i<languages.length;i++){
var myPattern = new RegExp('(\\w*'+languages[i]+'\\w*)','gi');
var matches = myString.match(myPattern);
if (matches != null)
{
console.log(languages[i]);
}
}
当我到达C#或C ++时,正则表达式会引发错误? 提取这些以及其他任何东西的任何事情都会受到赞赏。 注意我仍然需要转义其他特殊字符,例如(',','。','|');
答案 0 :(得分:2)
不需要正则表达式,这是一个简单的indexOf
操作,其结果比正则表达式更“好”-例如您还可以指出在文本中找到字符串的位置。
const myString="I know the languages C, C# and JAVA";
const languages=['JAVA','C','Angular','C++','Python','C#'];
languages.forEach(lang => {
let x;
if ((x = myString.indexOf(lang)) > -1) {
console.log(`Found ${lang} at position ${x}`);
}
});
答案 1 :(得分:1)
还可以使用字符串includes()
方法。 includes()
方法确定字符串是否包含指定字符串的字符。如果字符串包含字符,则此方法返回true
,否则返回false
。请注意,此方法为case sensitive
。
var myString = 'I know the languages C, C# and JAVA',
languages = [ 'JAVA','C','Angular','C++','Python','C#' ];
for ( var i = 0; i < languages.length; i++ ) {
if ( myString.includes( languages[ i ] ) ) console.log( languages[ i ] )
}