SUBSTRING_INDEX()在指定的分隔符出现次数之前返回字符串中的子字符串。
JavaScript中是否有任何等效功能?我需要执行相同的操作..但是在JavaScript中使用字符串值。
答案 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 );
}