2017-09-21 20 views
0

文字列内の特定の文字の存在を検索するソリューションを探しています。つまり、指定された文字が文字列内にあればtrueを返します。文字列内の特定の文字を見つける方法

今は配列とループでそれをやっています。しかし正直なところ、私はそれが良い方法ではないと感じています。配列やループのない簡単な方法はありますか?

var special = ['$', '%', '@']; 
 
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.'; 
 
var exists = false; 
 
$.each(special, function(index, item) { 
 
    if (mystring.indexOf(item) >= 0) { 
 
    exists = true; 
 
    } 
 
}); 
 
console.info(exists);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

+8

正規表現は、あなたがここで必要なものを正確にです: '=/[$%@] /テスト(のMyString)' – georg

+0

ザッツ完璧な...おかげでたくさん存在します。コメントの代わりに答えとして入力してください –

答えて

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..."); 
} 

てください、メモ:お使いの場合には

あなたはこのような何かを行う必要があります)あなたがそれを使用するたびに。

1

は、正規表現で[x]は、単一の文字のためのものであることに注意してください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

てみてください。

replaceを検索すると、文字列に 'r、e、p、l、a、c'が含まれているものを探します。

regExで気づくべきもう一つのことはエスケープです。単純なエスケープを使用してここにあるregExを見つける - >Is there a RegExp.escape function in Javascript?私は文字列でより一般的なfindを作りました。

もちろん、あなたはgiven characters in a stringに頼んだので、これはSOのこの投稿を見つける誰のためのaddenumの答えのほうが多いです。文字列の最初の質問を見て、人々があなたが単に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

+0

拡張にはうまくいっていますが、エスケープには[this one](https://stackoverflow.com/a/3561711/989121)を使用します。 – georg

+0

乾杯@georg私はその変更を.. – Keith

関連する問題