2010-10-01 53 views

回答

5

的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 
+0

不错..谢谢.. :) – 2010-10-10 21:11:05

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

那我的拼接,拼接,连接方法呢?它看起来相当于MySQL函数,并且比你建议的for循环方法更简洁一些。 – 2010-10-01 14:42:11

+0

同意。你的例子更漂亮。 – Bart 2010-10-01 14:48:27

0

我知道一个古老的问题,但只是为了记录和万一它有助于任何人,以下是略有更新这个选择的答案允许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); 
} 
相关问题