繁体   English   中英

如何分割字符串,在一个字符前打断一个单词?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM