2010-10-01 2 views

Répondre

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

agréable .. n merci .. :) –

0

indexOf peut être ce que vous êtes après: http://www.w3schools.com/jsref/jsref_IndexOf.asp

Bien sûr, vous auriez à combiner avec quelque chose comme substr: http://www.w3schools.com/jsref/jsref_substr.asp

EDIT: Plus je regardais dans ce cas, plus il est difficile de donner quelque chose exactement comme ce que vous cherchez. Une façon de le faire est avec un Regular Expression, ou, je l'ai écrit une petite fonction simple qui vous permettra d'utiliser la syntaxe presque identique à 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

Qu'en est-il de ma méthode split, splice, join? Il semble équivalent à la fonction MySQL, et un peu plus concis que la méthode for loop que vous suggérez. –

+0

D'accord. Ton exemple est plus joli. – Bart

0

Une vieille question que je sais, mais juste pour l'enregistrement et dans le cas où il aide quelqu'un, ce qui suit est légèrement mis à jour à la réponse sélectionnée qui permet à substring_index de fonctionner exactement comme dans MySQL, c'est-à-dire en tenant compte des index négatifs.

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); 
}