-3
votes

transformer des nombres positifs sur '+' et négatif à '-' 'regex / javascript

Je ne peux pas transformer une chaîne

'1,2,3, -6,10, -2'

J'ai besoin de résultat:

'+++ - + -'

Tous les nombres négatifs doivent être

'-'

et positif

'+'

Ma solution: xxx

Ça fonctionne bien, pourrait-il être plus court?


0 commentaires

3 Réponses :


5
votes

J'utiliserais une fonction de remplacement à la place: Match un en option - code> et des caractères numériques suivis d'une virgule facultative et remplacez-la par - code> si le numéro contraint est négatif, sinon avec + code>:

p>

const input = '1,2,3,-6,10,-2';
console.log(
  input
    .replace(/-\d+,?/g, '-')
    .replace(/\d+,?/g, '+')
);


0 commentaires

0
votes

Vous pouvez diviser la chaîne et vérifier le signe.

p>

var string = '1,2,3,-6,10,-2',
    result = string
        .split(',')
        .map(v => '+-'[+(v < 0)])
        .join('');
        
console.log(result);


0 commentaires

3
votes

doit utiliser regex ou peut-il être JS uniquement? Et la chaîne est-elle toujours composée d'INT et d'utilisation de Split en utilisant "", "? C'est à dire. Serait-ce toujours quelque chose comme "1, -234,4,1, -124" en plus de votre exemple?

Si tel est peut-être, vous pouvez utiliser le MATH.SIGN () fonction. P>

Encore une fois, ce résultat n'utilise pas regex, ce que je ne suis pas sûr que si tel est une exigence "DOIT avoir". P>

P>

const example = '1,2,3,-6,10,-2';
const result = example.split(',').map(d => Math.sign(d) >= 0 ? '+' : '-').join('');

console.log(result); // "+++-+-"


2 commentaires

Oo je viens de voir la réponse de certainsPerformance! Que l'on regarde les marchandises de regex


Regex n'est pas toujours la solution "droite". J'aime ça.