Javascript 提取字符串部分的最有效方法

Javascript 提取字符串部分的最有效方法,javascript,jquery,split,Javascript,Jquery,Split,我有一堆格式为“TYPE_1_VARIABLE_NAME”的字符串 目标是获得以下形式的3个变量: varType = 'TYPE', varNumber = '1', varName = 'VARIABLE_NAME' 实现这一目标最有效的方法是什么 我知道我可以使用: var firstUnderscore = str.indexOf('_') varType = str.slice(0, firstUnderscore)) varNumber = str.slice(firstUnder

我有一堆格式为“TYPE_1_VARIABLE_NAME”的字符串

目标是获得以下形式的3个变量:

varType = 'TYPE',
varNumber = '1',
varName = 'VARIABLE_NAME'
实现这一目标最有效的方法是什么

我知道我可以使用:

var firstUnderscore = str.indexOf('_')
varType = str.slice(0, firstUnderscore))
varNumber = str.slice(firstUnderscore+1,firstUnderscore+2)
varName = str.slice(firstUnderscore+3)
但这感觉是一种糟糕的做法。有更好的办法吗?正则表达式

或者我应该将变量重命名为“TYPE_1_variableName”并执行以下操作:

varArray = str.split('_')
然后通过以下方式获得:

varType = varArray[0],
varNumber = varArray[1],
varName = varArray[2]

谢谢你的帮助。jQuery也可以。

您可以使用regex和
split

var string='TYPE_1_VARIABLE_NAME';
var div=string.split(/^([A-Z]+)Z(\d+)Z(\w+)$/);
console.log('type:'+div[1]);
log('num:'+div[2]);
console.log('name:'+div[3])我找到了一个答案:

ES6标准化了解构分配,允许您执行Firefox支持了相当长一段时间的操作:

var [type, number, name] = str.split('_');
您可以使用Kangax检查浏览器支持

下面是一个示例

Regex解决方案 鉴于第一个和第二个下划线是分隔符,此正则表达式方法将提取部分(允许在最后一部分中使用下划线):

鉴于第一个变量由字符和第二个数字组成,可以使用更具体的正则表达式:

var parts = string.match(/(\w+)_(\d)_(.+)/);
非正则解 使用
.split(“”“)
,可以执行以下操作:

//input data
var string = 'TYPE_1_VARIABLE_NAME';

//extract parts using .split()
var parts = string.split('_');

//indexes 0 and 1 contain the first parts
//the rest of the parts array contains the last part
var varType = parts[0];
var varNumber = parts[1];
var varName = parts.slice(2).join('_');

就效率而言,两种方法包含的代码量大致相同。

您所说的“更好”或“最有效”是什么意思?究竟是什么让选项A比选项B或C“更好”?什么最有效?代码执行?代码可维护性?可读性?常规表达式我建议使用
var arr=str.split('''.')
方法
(.*?)\u(.*?)\ u(.*?)$
,您的组将拥有您的值。或者
(.*?)\u(.*?)\ u(.*)
在这种情况下,我不会太担心速度问题(除非你正在循环数万个这样的循环),所以选择你最容易阅读的。
var parts = string.match(/(\w+)_(\d)_(.+)/);
//input data
var string = 'TYPE_1_VARIABLE_NAME';

//extract parts using .split()
var parts = string.split('_');

//indexes 0 and 1 contain the first parts
//the rest of the parts array contains the last part
var varType = parts[0];
var varNumber = parts[1];
var varName = parts.slice(2).join('_');