Je ne peux pas transformer une chaîne
'1,2,3, -6,10, -2' P> blockQuote>
J'ai besoin de résultat: p>
'+++ - + -' P> blockQuote>
Tous les nombres négatifs doivent être p>
'-' p> blockQuote>
et positif p>
'+' p> blockQuote>
Ma solution: p>
xxx pré> Ça fonctionne bien, pourrait-il être plus court? p> p>
3 Réponses :
J'utiliserais une fonction de remplacement à la place: Match un p> 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>: const input = '1,2,3,-6,10,-2';
console.log(
input
.replace(/-\d+,?/g, '-')
.replace(/\d+,?/g, '+')
);
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);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); // "+++-+-"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.