-3
votes

Définissez le dernier numéro dans une chaîne sur négative

J'ai une chaîne avec des caractères mathématiques différents et je veux faire le dernier numéro négatif / positif. Disons que la chaîne est "100/5 * 30-60 + 333". Le résultat que je veux est "100/5 * 30-60 + (- 333)", et je veux le convertir à positif ("100/5 * 30-60 + 333").

function posNeg() {
  // hiddenText is a <input> element. This is not shown.
  let n = hiddenText.value;
  n.split('+');
  n.split('-');
  n.split('*');
  n.split('/');
  console.log(n);
}


2 commentaires

Mais ... pourquoi voulez-vous faire ça?


Ce ne serait-il pas essentiellement un non-op? Je ne comprends pas la partie de la conversion; Gardez juste l'original.


4 Réponses :


2
votes

Premièrement, je serais assortir à tous les opérateurs de mathématiques de base pour obtenir leur commande: xxx pré>

puis, diviser la chaîne: p> xxx pré> P> Ensuite, vous aurez une gamme de nombres, dans laquelle vous pouvez muté le dernier numéro facilement: P>

newArr = newArr.join(' ')


2 commentaires

Je crois que c'est, puisqu'il a dit que le problème est que la production de console.log est la valeur d'entrée complète.


Édité la réponse, je crois que cela répond à cette question maintenant.



0
votes

Pour obtenir des chiffres, vous pouvez utiliser remplacer la fonction et scinder le code de contrôle ci-dessous:

   function posNeg() {
  // hiddenText is a <input> element. This is not shown.
  let n = "100/5*30-60+333";
  n = n.replace('+','|+');
  n = n.replace('-','|-');
  n = n.replace('*','|*');
  n = n.replace('/','|/');
  n=n.split('|');console.log(n);
// to use any caracter from array use it in removeop like example 
// if we have array (split return) have 100 5 30 60 333 we get 100 for example 
// we need to make removeop(n[0]) and that reutrn 100;
// ok now to replace last value to negative in string you can just make 
// var lastv=n[n.length-1];
// n[n.length-1] ='(-'+n[n.length-1])+')';
//var newstring=n.join('');
//n[n.length-1]=lastv;
//var oldstring=n.join('');


}


function removeop(stringop)
{

  stringop = stringop.replace('+','');
  stringop = stringop.replace('-','');
  stringop = stringop.replace('*','');
  stringop = stringop.replace('/','');
return stringop;
}


1 commentaires

Une fois que vous l'avez divisé, comment le remettez-vous ensemble?



0
votes

Si vous avez vraiment besoin d'ajouter "()", vous pouvez modifier en conséquence xxx


0 commentaires

0
votes

Disons que la chaîne est "100/5 * 30-60 + 333". Le résultat que je veux est "100/5 * 30-60 + (- 333)", et je veux le convertir en positif ("100/5 * 30-60 + 333"). P>

Le code suivant fait que: P>

let str = "100/5*30-60+(-333)";
str = str.replace('(-', '').replace(')', '');
console.log(str); // 100/5*30-60+333

0 commentaires