Javascript 在2个符号的索引处查找并拆分字符串

Javascript 在2个符号的索引处查找并拆分字符串,javascript,substring,indexof,Javascript,Substring,Indexof,我正在做一些本地化编码,并试图分离可能的替代方案。例如,我想从“en US”或“en_US”中得到“en”。我已经为第一个选项找到了解决方法,但我正在寻找最干净的方法来处理连字符和下划线。我首先要检查它是否可以被拆分,这样我就不会在主区域和备用区域都使用“en”和“en” if (currLoc && currLoc.indexOf('-') > -1) { altLoc = currLoc.substring(0, currLoc.indexOf('-')); }

我正在做一些本地化编码,并试图分离可能的替代方案。例如,我想从“en US”或“en_US”中得到“en”。我已经为第一个选项找到了解决方法,但我正在寻找最干净的方法来处理连字符和下划线。我首先要检查它是否可以被拆分,这样我就不会在主区域和备用区域都使用“en”和“en”

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

if ( currLoc ){

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

}

如果您希望字符串不是任意的,而是仅作为
en-US
en-US
或空或
en
。试试这个代码

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

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

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

var matches = new RegExp(/(.{2}).[-_](.{2})/gi).exec("fdgf-fed");
if (matches != null)
    altLoc  = matches[1];
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..."
var reg=newregexp(/^([a-z]{2})[^0-9]|[^a-z]|[^a-z].+/g);
var result=reg.exec(文本);

//结果[1]使用正则表达式可能是个好主意。@RhinoDevel回答这个问题!最好在回答的同时添加一些解释。这将有助于其他人理解和解决这一问题。
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..."