2017-04-11 134 views
0

如何確定src中的任何單個字符是否與restricted中的任何單個字符匹配?我有這個JS方法,做這項工作,但我想,如果我可以對其進行改進:如何檢查一個字符串是否包含來自另一個字符串的任何字符?

bool CheckRestricted(string src, string restricted) 
{ 
    return src.Any(s => restricted.Contains(s)); 
} 

function CheckRestricted(src, restricted) 
{ 
    for (var i = 0; i < src.length; i++) 
    { 
     for (var j = 0; j < restricted.length; j++) 
     { 
      if (src.charAt(i) == restricted.charAt(j)) 
       return false; 
     }    
    } 

    return true; 
} 

如果這是C#,我可以在一個單一的線與LINQ實現這一目標

在JS中有一些類似的功能,我不知道?

編輯:樣品用例:

CheckRestricted("ABCD", "!+-=;:'`"); //true 
CheckRestricted("ABCD!", "!+-=;:'`"); //false 

它主要用於禁止 '特殊字符'。

+0

請添加一些用例。 –

+0

@NinaScholz編輯我的帖子與2個樣本。 – sab669

+0

可能的重複[Javascript。檢查,如果字符串中包含的文本從子陣列(http://stackoverflow.com/questions/5582574/javascript-checking-if-string-contains-text-from-an-array-of-substrings) –

回答

3
function CheckRestricted(src, restricted) { 
    return !src.split("").some(ch => restricted.indexOf(ch) !== -1); 
} 
+3

第二' .split(「」)'是沒有必要 – Andreas

+0

你可以用'String.prototype.includes()' – MultiplyByZer0

+0

這似乎爲我工作,至少它並使用基於Web的JS編譯器。出於某種原因,Visual Studio 2013在'=>'上提供了'語法錯誤'?但是,VS知道什麼JS,反正:) – sab669

0

無迴路解決方案。

function CheckRestricted(src, restricted) { 
 
    var a = [...src, ...restricted]; 
 
    return [...new Set(a)].length == a.length; 
 
} 
 

 
console.log(CheckRestricted('word', 'abc')); 
 
console.log(CheckRestricted('word', 'wor'));

相關問題