我正在寻找一种搜索字符串中给定字符存在的解决方案。这意味着如果字符串中存在任何给定的字符,它应该返回true。
现在正在使用数组和循环。但老实说,我觉得这不是一个好方法。那么没有数组或循环有最简单的方法吗?
null

$JobId = Input::get('JobId') ;

答案 0 :(得分:1)
尝试使用regex
var patt = /[$%@]/;
console.log(patt.test("using it to replace VLOOKUP entirely.$ But there are still a few lookups that you are not sure how to perform. Most importantly, you would like to be able to look up a value based on multiple criteria within separate columns."));
答案 1 :(得分:1)
请注意,regEx中的[x]
仅适用于单个字符。
如果你说要搜索说replace
,它会在字符串中查找“r,e,p,l,a,c”的任何内容。
使用regEx需要注意的另一件事是逃避。使用简单的转义regEx在这里找到 - > Is there a RegExp.escape function in Javascript?我在字符串中进行了更通用的查找。
当然你问given characters in a string
,所以对于在SO上发现这篇文章的人来说,这更像是一个答案。在查看一系列字符串的原始问题时,人们可能很容易认为这是您可以传递给regEx的内容。 IOW:你的问题不是我怎么能知道字符串中是否存在$,%,@。
var mystring = ' using it to replace VLOOKUP entirely.$ But there are still a few lookups that you are not sure how to perform. Most importantly, you would like to be able to look up a value based on multiple criteria within separate columns.';
function makeStrSearchRegEx(findlist) {
return new RegExp('('+findlist.map(
s=>s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&')).join('|')+')');
}
var re = makeStrSearchRegEx(['$', '%', '@', 'VLOOKUP']);
console.log(re.test(mystring)); //true
console.log(re.test('...VLOOKUP..')); //true
console.log(re.test('...LOOKUP..')); //false
答案 2 :(得分:0)
最好的方法是使用正则表达式。您可以阅读更多相关信息here。
在你的情况下,你应该做这样的事情:
const specialCharacters = /[$%@]/;
const myString = ' using it to replace VLOOKUP entirely.$ But there are still a few lookups that you are not sure how to perform. Most importantly, you would like to be able to look up a value based on multiple criteria within separate columns.';
if(specialCharacters.test(myString)) {
console.info("Exists...");
}
请注意,在每次使用时,将正则表达式存储在变量中以防止创建正则表达式(这不是最快的操作)是一种很好的方法。