检查另一个字符串 JavaScript 中一个字符串是否有任何字符的最佳方法
best way to check if any char of one string in another string javascript
我有一个字符串"SünilGarg"
现在我想检查上面的字符串是否包含第二个字符串"üG#$"中的字符。
一种方法是使用循环检查第二个字符串的每个字符与第一个字符串。但是有没有其他最好和有效的方法可以做到这一点?
试试这个:
var mainString = "SünilGarg",
charsString = "üG#$";
var contains = Array.prototype.some.call(mainString, function(char) {
return charsString.indexOf(char) !== -1;
});
由于字符串是类似于数组的对象(部分),因此很容易对它们使用一些数组方法。
我很确定最快的方法是遍历较大的字符串,并为每个字符检查较短的字符串是否包含它:
function containsAny(haystack, needles){
for(var i = 0; i < haystack.length; i++){
for(var j = 0; j < needles.length; j++){
if(haystack[i] === needles[j]) {
return true;
}
}
}
return false;
}
这里有一些证据:http://jsperf.com/stringcontainsany
编辑:
实际上,string.indexOf
比索引到字符串中更快,因此这更有效:
function containsAny(haystack, needles) {
for (var i = 0; i < haystack.length; i++) {
if (needles.indexOf(haystack[i]) !== -1) {
return true;
}
}
return false;
}
下面的代码应该可以工作
RegExp.escape= function(s) {
return s.replace(/[-'/''^$*+?.()|[']{}]/g, '''$&');
};
var fString = 'SünilGarg';
var sString = RegExp.escape('üG#$');
var pattern = new RegExp('['+ sString +']');
pattern.test(fString); //Will return true
使用 indexOf
检查是否存在字符匹配
function checkString(myString,withCompare){
var dumArray = withCompare.split('')
var i = 0;
for(i;i<dumArray.length;i++){
if(myString.indexOf(dumArray[i]) ==-1){
// do nothing
console.log('nothing')
}
else{
console.log(dumArray[i])
}
}
}
checkString('hello','mvo');
斯菲德尔
使用 es6 一行:
var str = 'SünilGarg';
var match = 'üG#$';
var res = match.split('').some(v => str.includes(v));
console.log(res);
请注意,这仅适用于现代浏览器,例如最新的chrome或Firefox
或者为了获得更广泛的支持,请使用 es5:
var res = match.split('').some(function (v) {
return str.indexOf(v) > -1;
});
在这种情况下,我不是最聪明的,但我会使用一个循环和 indexOff。 例如:
function isMatch(str) {
var matchStr = 'üG#$';
for (var i = 0; i < matchStr.length; i++) {
if (str.indexOf(matchStr[i]) !== -1) {
return true;
}
}
return false;
}
不确定是否有更聪明的举动,但我认为正则表达式可能会更慢。
相关文章:
- jQuery中是否内置了任何字符串格式化函数
- jsi18n-django.catogue没有'不包含任何已翻译的字符串(但是djangojs.mo包含)
- 是否有任何JavaScript UI组件可以显示字符串之间的差异
- json字符串的Javascript帖子:没有任何东西传入或返回
- 在字符串列表中搜索任何出现的单词,如果单词的第一个字符匹配,则高亮匹配单词.Javascript正则表达式
- Javascript中的正则表达式,用于只有数字的字符串,并且不应在除数字以外的任何位置包含任何字符
- 如果URL中有任何字符串变体匹配,则返回true
- 如何检查数据表是否有任何包含字符串的行并获取它的行索引
- 正则表达式,用于匹配不是字符串“ABCD”的任何内容
- 在另一个由非字母数字字符分隔的字符串中搜索(任何)字符串
- 有任何方法可以转换这个字符串:;库德纳ção”;对此:“;Coordena&#231&#2
- 从任何jquery选择器字符串创建元素的最有效方法
- Regex:检查字符串的任何部分是否包含SSN
- 当用户在命令提示符中选择任何字符串时,节点Js不为任何请求提供服务
- 查找任何未定义的变量并从url字符串中隐藏
- 使用jQuery检查html元素中是否存在任何字符串
- Google Spreadsheets脚本可以删除找到字符串的任何行
- 如何在Jquery中使用给定的任何特定排序顺序对字符串数组进行排序
- Regex-仅当字符串包含任何其他字符时才允许使用某些字符
- 如何在mongodb的边界框中获取任何项目(点,线字符串,多边形)