2 votes

Comment remplacer chaque délimiteur de champ d'une chaîne délimitée (par exemple, de la virgule au point-virgule) à l'aide de regex et de javascript ?

Je voudrais remplacer une virgule sur deux dans une chaîne par un point-virgule.

Par exemple :

1,2,3,4,5,6,7,8,9,10

deviendrait

1;2,3;4,5;6,7;8,9;10

Quelle serait la regexp à utiliser pour faire cela ? Une explication serait la bienvenue.

Merci :)

3voto

Joseph Marikle Points 25280
var myNums = "1,2,3,4,5,6,7,8,9,10";
myNums.replace(/(.*?),(.*?,)?/g,"$1;$2");

Ça va le faire.

1voto

Paulpro Points 54844
var str = '1,2,3,4,5,6,7,8,9,10';
str.replace(/,(.*?,)?/g, ';$1');

// Now str === "1;2,3;4,5;6,7;8,9;10"

0voto

Tejs Points 23834

Vous feriez quelque chose comme ça :

 myString.replace(/,/g, ';');

0voto

Colin Points 113

Vous pouvez utiliser ce modèle de regex

([^,]*),([^,]*),?

Et remplacer par $1;$2, . Le point d'interrogation à la fin est pour expliquer l'absence de virgule signalant la fin de la dernière paire.

Par exemple...

var theString = "1,2,3,4,5,6,7,8,9,10";
theString = theString.replace(/([^,]*),([^,]*),?/ig, "$1;$2,"); //returns "1;2,3;4,5;6,7;8,9;10,"
theString = theString.substring(0, theString.length - 1); //returns "1;2,3;4,5;6,7;8,9;10"

0voto

Chris Pickett Points 958

Une réponse non-regex :

function alternateDelims(array, delim_one, delim_two) {
    var delim = delim_one,
        len = array.length,
        result = [];

    for(var i = 0; i < len; i += 1) {
        result.push(array[i]);
        if(i < len-1) { result.push(delim); }
        delim = (delim === delim_one) ? delim_two : delim_one;
    }

    return result.join('');
}

nums = "1,2,3,4,5,6,7,8,9,10"
alternateDelims(nums.split(','), ';', ',');

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X