JavaScript相当于MySQL函数SUBSTRING_INDEX()

时间:2010-10-01 14:11:18

标签: javascript mysql string

MySQL中的

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

JavaScript中是否有任何等效功能?我需要执行相同的操作..但是在JavaScript中使用字符串值。

3 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:0)

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));

答案 2 :(得分:0)

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

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 );
 }