我有一些使用 split 的函数,但我希望它separator
是一个变量。separator
将在几个地方使用,并且只需要更改一次变量而不是到处更改硬代码会很好。
但是,当然,它不起作用。该模式看起来是正确的,但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*/ );
}