[英]How do I split a string, breaking at a word before a character?
我有以下字符串
'Material: Metall & PVC Size: Ø 32 mm Weight: 8 gram'
使用JavaScript,将其解析为最快的方法是:
var title = ["Material:", "Size:", "Weight:"];
var property = ["Metall & PVC", "Ø 32 mm", "8 gram"];
获得标题。
var string, titles; string = 'Material: Metall & PVC Size: Ø 32 mm Weight: 8 gram'; titles = string.match(/[a-zA-Z]+:/g); console.log(titles);
使用正则表达式/[a-zA-Z]+:/g
从标题中删除:
var string, titles; string = 'Material: Metall & PVC Size: Ø 32 mm Weight: 8 gram'; titles = string.match(/[a-zA-Z]+:/g); for (var i = 0, len = titles.length; i < len; i++) { titles[i] = titles[i].slice(0, -1); } console.log(titles);
尝试这个
var regex = new RegExp(title.join("|"));
var input = 'Material: Metall & PVC Size: Ø 32 mm Weight: 8 gram';
var property = input.split( regex ).slice(-(title.length));
演示
var title = ["Material:", "Size:", "Weight:"]; var input = 'Material: Metall & PVC Size: Ø 32 mm Weight: 8 gram'; var regex = new RegExp(title.join("|")); var property = input.split(regex).slice(-(title.length)).map( function(item){ return item.trim(); }); console.log(property);
我知道正则表达式并不便宜,如果标题中有空格,这将不起作用,但是我认为这对您来说可能是一个很好的起点。
var string='Material: Metall & PVC Size: Ø 32 mm Weight: 8 gram';
var title=[], properties=[];
string.split(/(\w+:) /).forEach(function(element,index){
if(index>0){// ignore first empty element
if(index%2==1){
title.push(element); // collect titles
}else{
properties.push(element); // collect properties
}
}
});
var string = 'Material: Metall & PVC Size: Ø 32 mm Weight: 8 gram'; var title = string.match(/[^ ]+:/g); var property = string.split(/ ?[^ ]+: ?/g).splice(1); console.log(title, property);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.