在javascript中从列表键代码中拆分字符串
我有一个代表分隔键的keyCode列表。在用户输入一个字符串(从文本框中)后,我如何用一个键码列表拆分该字符串?到目前为止,split()函数允许使用string或regexp,在将keyCode转换为regexp时,我没有发现任何东西 在这种情况下我该怎么办 例如:在javascript中从列表键代码中拆分字符串,javascript,Javascript,我有一个代表分隔键的keyCode列表。在用户输入一个字符串(从文本框中)后,我如何用一个键码列表拆分该字符串?到目前为止,split()函数允许使用string或regexp,在将keyCode转换为regexp时,我没有发现任何东西 在这种情况下我该怎么办 例如: separators = [ mdConstants.KEY_CODE.COMMA // 188 mdConstants.KEY_CODE.DASH: // 189 ... ] Input ->
separators = [
mdConstants.KEY_CODE.COMMA // 188
mdConstants.KEY_CODE.DASH: // 189
...
]
Input -> Output
------------------
abc-def -> [ abc, def ]
abc-def.efg -> [ abc, def, efg ]
您可以在输入框上侦听
onKeyDown
事件,这将为您提供一个事件对象。您的函数可以如下所示
var tempWord=”“;
var arrayYouWant=[]代码>
var分隔符=[]代码>
function onKeyDownHandler (event) {
var value = event.target.value;
var keyCode = event.which || event.keyCode;
if (separators.indexOf(keyCode) === -1) {
tempWord += value;
} else {
arrayYouWant.push(tempWord);
tempWord = "";
}
}
这是一个模糊的实现,但我希望您能理解。不完全确定这是否是您想要的,但根据我对您的问题的理解,这里有一个存根:
const separators = [
",",
"-",
"."
];
// make regex pattern from your separators.
// pipe serves as a char separator
// double is backslash for escaping chars
let pattern = new RegExp('\\' + separators.join('|\\'), "g");
// user input
let userInput = "abc-def.efg";
// resulting array of words split by your separators
let result = userInput.split(pattern);
console.log(result);
可以在拆分中使用正则表达式:
// eg ,-
var separators = [44, 45];
var myText = "this, is a - test";
var regex = "[" + separators.map(function (c) { return String.fromCharCode(c); }).join("") + "]";
var groupedItems = myText.split(new RegExp(regex));
console.log(groupedItems);
您可以尝试用第一个分隔符替换所有分隔符,然后使用javascript的拆分函数和第一个分隔符进行拆分
以下是一个例子:
var a = 'abc-def.efg';
for (var i = 0; i<separators.length; i++){
a = a.replace(separators[i],separators[0]);
}
var a_split = a.split(separators[0]);
console.log(a_split);
var a='abc def.efg';
对于(var i=0;i可以使用RegExp
对象拆分字符串
//假设给定了一个对象
常数mdConstants={
“钥匙代码”:{
“逗号”:“,”,
“破折号”:“破折号”,
“点”:”
}
};
//您可以创建分隔符列表
常量分隔符=Object.keys(mdConstants.KEY_CODE).map(k=>'['+mdConstants.KEY_CODE[k]+']');//清理符号以避免正则表达式特殊字符冲突
//创建RegExp对象
const re=new RegExp(separators.join('|');
//并使用它
console.log('abc-def.ghi,jkl.split(re));
我刚刚更新了这个问题,请再仔细检查一下。密码和字符是两个完全不同的东西。尝试拆分字符串(这是一个字符列表)是没有意义的按键代码。您需要首先获取这些键代码对应的字符。@misorude我刚刚解决了它。谢谢您,muchI对该事件的访问权限有限,所以我无法处理它。谢谢您回答我。如果我使用var regex=“[”+this.separators.join(“+”)”;var tokens=chip.split(new RegExp(regex))是否有区别我找到了谢谢你的回答