【发布时间】:2010-10-01 14:11:18
【问题描述】:
SUBSTRING_INDEX() 在 MySQL 中从指定的分隔符出现次数之前的字符串中返回一个子字符串。
在 JavaScript 中有没有等价的函数?我需要执行相同的操作.. 但在 JavaScript 中的字符串值上。
【问题讨论】:
标签: javascript mysql string
SUBSTRING_INDEX() 在 MySQL 中从指定的分隔符出现次数之前的字符串中返回一个子字符串。
在 JavaScript 中有没有等价的函数?我需要执行相同的操作.. 但在 JavaScript 中的字符串值上。
【问题讨论】:
标签: javascript mysql string
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
编辑: 我对此进行的研究越多,就越难以提供与您正在寻找的完全一样的东西。一种方法是使用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));
【讨论】:
我知道的一个老问题,但只是为了记录,以防万一它对任何人有帮助,以下是对所选答案的轻微更新,它允许 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 );
}
【讨论】: