JavaScript-эквивалент функции MySQL SUBSTRING_INDEX () - PullRequest
3 голосов
/ 01 октября 2010

SUBSTRING_INDEX () в MySQL возвращает подстроку из строки перед указанным числом вхождений разделителя.

Есть ли эквивалентная функция в JavaScript? Мне нужно выполнить то же самое .. но для строкового значения в JavaScript.

Ответы [ 3 ]

6 голосов
/ 01 октября 2010

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 голосов
/ 18 июля 2014

Старый вопрос, который я знаю, но только для справки, и в случае, если он кому-нибудь поможет, следующее слегка обновлено для выбранного ответа, что позволяет substring_index работать точно так же, как в MySQL, то есть также с учетом отрицательных индексов.1001 *

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 );
 }
0 голосов
/ 01 октября 2010

indexOf может быть тем, что вы ищете: http://www.w3schools.com/jsref/jsref_IndexOf.asp

Конечно, вам придется комбинировать это с чем-то вроде substr : http://www.w3schools.com/jsref/jsref_substr.asp

EDIT: Чем больше я изучал это, тем труднее было дать что-то в точности то, что вы ищете. Один из способов сделать это с помощью 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));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...