【问题标题】:Find and split string at index of 2 symbols在 2 个符号的索引处查找和拆分字符串
【发布时间】:2016-07-01 09:46:07
【问题描述】:

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

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

【问题讨论】:

  • 使用正则表达式可能是个好主意。
  • @RhinoDevel 回答这个问题!

标签: javascript substring indexof


【解决方案1】:

怎么样

if ( currLoc ){

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

}

【讨论】:

    【解决方案2】:

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

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

    实际上如果currLoc是空字符串,if(curLoc)条件可以省略,此时你的altLoc也将是空字符串。

    【讨论】:

      【解决方案3】:
      var matches = new RegExp(/(.{2}).[-_](.{2})/gi).exec("fdgf-fed");
      if (matches != null)
          altLoc  = matches[1];
      

      【讨论】:

      • 最好在答案中添加一些解释。有助于其他人理解和解决。
      【解决方案4】:
      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
      

      【讨论】:

        【解决方案5】:

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

        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..."
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-02-17
          相关资源
          最近更新 更多