【问题标题】:JavaScript equivalent of the MySQL function SUBSTRING_INDEX()MySQL 函数 SUBSTRING_INDEX() 的 JavaScript 等效项
【发布时间】:2010-10-01 14:11:18
【问题描述】:

SUBSTRING_INDEX() 在 MySQL 中从指定的分隔符出现次数之前的字符串中返回一个子字符串。

在 JavaScript 中有没有等价的函数?我需要执行相同的操作.. 但在 JavaScript 中的字符串值上。

【问题讨论】:

    标签: javascript mysql string


    【解决方案1】:

    MySQL:

    SELECT SUBSTRING_INDEX('www.stackoverflow.com', '.', 1) result;
    +--------+
    | result |
    +--------+
    | www    |
    +--------+
    1 row in set (0.00 sec)
    
    SELECT SUBSTRING_INDEX('www.stackoverflow.com', '.', 2) result;
    +-------------------+
    | result            |
    +-------------------+
    | www.stackoverflow |
    +-------------------+
    1 row in set (0.00 sec)
    

    JavaScript:

    function substringIndex (input, delimiter, index) {
      var arr = input.split(delimiter);
      arr.splice(index, arr.length - index);
      return arr.join(delimiter);
    }
    
    console.log(substringIndex('www.stackoverflow.com', '.', 1)); 
    // www
    
    console.log(substringIndex('www.stackoverflow.com', '.', 2)); 
    // www.stackoverflow
    

    【讨论】:

      【解决方案2】:

      indexOf 可能是您所追求的:http://www.w3schools.com/jsref/jsref_IndexOf.asp

      当然,您必须将其与 substr 之类的内容结合使用:http://www.w3schools.com/jsref/jsref_substr.asp

      编辑: 我对此进行的研究越多,就越难以提供与您正在寻找的完全一样的东西。一种方法是使用Regular Expression,或者,我编写了一个简单的小函数,可以让您使用与 SUBSTRING_INDEX()

      几乎相同的语法
      function substringIndex(str, char, occurrence){
          var newStr = '';
          var occurrenceMatches = 0;
      
          for (var i=0; str.length; i++){
              if (str.charAt(i)==char) occurrenceMatches++;
              if (occurrenceMatches==occurrence) break;
              newStr += str.charAt(i);
          }
      
          return newStr;
      }
      alert(substringIndex('www.mysql.com', '.', 2));
      

      【讨论】:

      • 我的拆分、拼接、连接方法呢?它看起来等同于 MySQL 函数,并且比您建议的 for 循环方法更简洁。
      • 同意。你的例子更漂亮。
      【解决方案3】:

      我知道的一个老问题,但只是为了记录,以防万一它对任何人有帮助,以下是对所选答案的轻微更新,它允许 substring_index 完全像它在 MySQL 中一样工作,即也允许负索引。

      function substring_index( input, delimiter, index ) {
          var arr = input.split( delimiter );
          if( index < 0 ){
             index = arr.length + index;
             arr.splice( 0, index );
          }else{
             arr.splice( index, arr.length - index );
          }
             return arr.join( delimiter );
       }
      

      【讨论】:

        猜你喜欢
        • 2014-07-14
        • 2020-07-22
        • 2011-10-16
        • 2018-08-06
        • 1970-01-01
        • 2012-03-29
        • 2013-07-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多