将具有名称部分和单位部分的复杂字符串拆分为两个子字符串的最优雅的 JavaScript/jQuery 解决方案是什么,就像这样?
输入:
var source = "some metric (example) [some unit]";
期望的结果:
var name = "some metric (example)"; //note - no trailing space
var units = "some unit";
将具有名称部分和单位部分的复杂字符串拆分为两个子字符串的最优雅的 JavaScript/jQuery 解决方案是什么,就像这样?
输入:
var source = "some metric (example) [some unit]";
期望的结果:
var name = "some metric (example)"; //note - no trailing space
var units = "some unit";
我可以这样做:
var parts = source.split('[');
var name = parts[0];
var units = parts[1].substring(0, parts[1].length - 1);
String.prototype.lastIndexOf
具有修剪功能之一。
var source = "some metric (example) [some unit]",
i = source.lastIndexOf('['),
name = $.trim(source.slice(0, i)), // "some metric (example)"
unit = $.trim(source.slice(i + 1, -1)); // "some unit"
匹配的最简单的正则表达式可能是
(.*)\s\[(.*?)\]
定义为
Javascript代码
var regex = /(.*)\s\[(.*?)\]/;
var input = "some metric (example) [some unit]";
var result = regex.exec(input);
console.log(result[1])
console.log(result[2])
结果:
some metric (example)
some unit
现场示例:http: //jsfiddle.net/2YNQM/
您可以在括号上拆分[
,然后修剪两个部分以确保没有前导或尾随空格,然后删除]
括号
var source = "some metric (example) [some unit]";
var [name, units] = source.replace(']','').split(' [').map(x=>x.trim());
console.log(name);
console.log(units);