在MySQL中,SUBSTRING_INDEX()函数返回指定分隔符出现次数之前的子字符串。
在JavaScript中是否有等价的函数?我需要执行相同的操作,但是在JavaScript中对一个字符串值进行操作。
在JavaScript中是否有等价的函数?我需要执行相同的操作,但是在JavaScript中对一个字符串值进行操作。
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
indexOf 可能是你需要的:http://www.w3schools.com/jsref/jsref_IndexOf.asp
当然,你需要将它与substr这样的东西结合起来使用:http://www.w3schools.com/jsref/jsref_substr.asp
编辑: 我越看越觉得难以给出像你要求的那样完全相同的东西。一种方法是使用正则表达式,或者,我编写了一个简单的小函数,让你可以使用几乎与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));
虽然这是一个老问题,但为了记录和帮助其他人,以下是对所选答案的轻微更新,使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 );
}