查找并拆分索引为2个符号的字符串

时间:2016-03-15 19:06:32

标签: javascript substring indexof

我正在进行一些本地化编码,而我正尝试将可能的替代方案分开。例如,我想得到' en'来自' en-US'或者' en_US'。我已经找到了如何为第一个选项做到这一点,但我正在为连字符和下划线寻找最干净的方法。我首先要检查它是否可以拆分,所以我不能最终使用' en'和' en'对于主要和备用语言环境。

if (currLoc && currLoc.indexOf('-') > -1) {
    altLoc = currLoc.substring(0, currLoc.indexOf('-'));
}

5 个答案:

答案 0 :(得分:1)

如果您希望字符串不是任意的,而只是en-USen_US或空或en。试试这段代码。

if(curLoc) {
    altLoc = currLoc.replace('-', '_').split('_')[0];
}

实际上,如果currLoc为空字符串,则if(curLoc)条件可以省略,在这种情况下,altLoc也将为空字符串。

答案 1 :(得分:0)

怎么样

if ( currLoc ){

  if( currLoc.indexOf('-') > -1) 
    altLoc = currLoc.substring(0, currLoc.indexOf( '-' ));
  else if( currLoc.indexOf('_') > -1 )
    altLoc = currLoc.substring(0, currLoc.indexOf( '_' ));

}

答案 2 :(得分:0)

var matches = new RegExp(/(.{2}).[-_](.{2})/gi).exec("fdgf-fed");
if (matches != null)
    altLoc  = matches[1];

答案 3 :(得分:0)

var str = 'en_US';
var str1 = 'en-US';

var arr = str.replace(/[_-]/g, " ").split(" ");

arr[0] //en
arr[1] //US

var arr1 = str1.replace(/[_-]/g, " ").split(" ");

arr1[0] //en
arr1[1] //US

答案 4 :(得分:0)

对于正则表达式方法,您可以使用:

var reg = new RegExp(/^([a-z]{2})[^0-9]|[^a-z]|[^A-Z].+/g);
var result = reg.exec(text);
//result[1] <-- first group: "en" in case of "en_Us,en_US,en-US..."