2016-11-04 88 views
0

我想獲取給定字符串中的第一個和最後一個_之間的字符串,但不適合我。看看下錶與輸入的例子=>輸出:如何獲得給定字符串中第一個和最後一個下劃線之間的字符串?

gbox_asset_locations_list => asset_locations 
gbox_company_list => company 
gbox_country_states_cities_list => country_states_cities 
string_company_1_string => company_1 

我曾嘗試以下:

$(function() { 
 
    var str = 'gbox_asset_locations_list'; 
 
    var result = str.substring(str.lastIndexOf('_') + 1, str.lastIndexOf('_')); 
 
    
 
    $('body').append(str + ' => ' + result); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>

但因爲我沒有不工作得到正確的輸出,任何可以幫助我得到這個工作?我做錯了什麼?

+1

爲什麼使用'lastIndexOf()'定位* first *下劃線? –

+0

@kevinternet是'=>' – ReynierPM

回答

2

那豈不是更容易使用正則表達式?

$(function() { 
    var str = 'gbox_asset_locations_list'; 
    var result = str.match(/_(.*)_/)[1]; 

    $('body').append(str + ' => ' + result); 
}); 

正則表達式匹配的第一個下劃線,然後儘可能多的任何種類的作爲可能的,那麼另一下劃線的字符'。然後,您將採用「多個角色」作爲結果。

2

嘗試:

var str = 'gbox_asset_locations_list'; 
 
var result = str.substring(str.indexOf('_') + 1, str.lastIndexOf('_')); 
 

 
console.log(result) 

+0

之後的字符串.IndexOf(....)必須是.indexOf(...) –

0
(function() { 
    var strs = ['gbox_asset_locations_list', 'gbox_company_list', 'gbox_country_states_cities_list', 'string_company_1_string'] 

    var res = []; 
    var _str; 

    strs.map(function(item, idx) { 
    _str = item.substring(item.indexOf('_')+1, item.lastIndexOf('_')); 
    res.push(_str); 
    document.querySelector('#results').innerHTML += res[idx] +'<br>'; 
    }.bind(this)); 
}()) 
相關問題