簡體   English   中英

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

[英]Most efficient way to extract parts of string

我有一堆格式為“ 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也可以。

正則表達式解決方案

假定第一個和第二個下划線是定界符,則此正則表達式方法將提取各部分(在最后一部分中允許使用下划線):

//input data
var string = 'TYPE_1_VARIABLE_NAME';

//extract parts using .match()
var parts = string.match(/([^_]+)_([^_]+)_([^$]+)/);

//indexes 1 through 3 contains the parts
var varType = parts[1];
var varNumber = parts[2];
var varName = parts[3];

假設第一個變量由字符組成,第二個變量由數字組成,則可以改用以下更具體的正則表達式:

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('_');

在效率方面,兩種方法都包含大約相同數量的代碼。

您可以使用正則表達式和split

 var string='TYPE_1_VARIABLE_NAME'; var div=string.split(/^([AZ]+)_(\\d+)_(\\w+)$/); console.log('type:'+div[1]); console.log('num:'+div[2]); console.log('name:'+div[3]); 

這是我在這里找到的答案:

var array = str.split('_'),
    type = array[0], number = array[1], name = array[2];

ES6使銷毀分配標准化,這使您可以執行Firefox相當長一段時間以來支持的工作:

var [type, number, name] = str.split('_');

您可以使用Kangax的兼容性表檢查瀏覽器支持。

這是樣本小提琴

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM