separator
分割を使用する関数がいくつかありますが、変数にしたいです。separator
はいくつかの場所で使用されるため、どこでもハード コードを変更するのではなく、変数を 1 回変更するだけでよいと考えられます。
しかし、もちろん、うまくいきません。パターンは正しいように見えますがsplit
、分割を定義する変数に問題があるはずです。
Google Chrome のコンソールで行ったいくつかのテストを次に示します。
separator = '|'; // separator to use
var pattern = '/\\' + separator + '\\s*/'; // define pattern
undefined
pattern;
"/\|\s*/"
// pattern is correct
// now define function with constant... variable version commented:
function split( val ) {
//var pattern = '/\\' + separator + '\\s*/';
return val.split( /\|\s*/ );
//return val.split( pattern );
}
undefined
split('asdf|jkl');
["asdf", "jkl"]
// function worked as expected
// now uncomment the variable portions:
function split( val ) {
var pattern = '/\\' + separator + '\\s*/';
//return val.split( /\|\s*/ );
return val.split( pattern );
}
undefined
split('asdf|jkl');
["asdf|jkl"]
// not as expected. string is not split into array
これは分割機能と関係があると思います。これを機能させるにはどうすればよいですか?このようにする必要があると思う唯一の理由は、簡単に変更できるようにしたいからですseparator
。それがなければ、機能するすべてのものをハードコーディングすることができました。
編集:正規表現を使用するかどうかは気にしません。ただし、文字列を分割しseparator
、値から余分なスペースが削除されていることを確認する必要があります。
また、オートコンプリート用の jQuery UI ページ (こちら) にならってコードをモデル化しています。そして、これが彼らが持っている機能です。彼らが独自の を定義する理由がわかりませんsplit
。
function split( val ) {
return val.split( /,\s*/ );
}