web-dev-qa-db-fra.com

supprimer des chiffres de la chaîne?

supprimer des nombres de la chaîne

 questionText = "1 Ding ?"

je veux remplacer ce numéro et le numéro de la question, le nombre peut être n'importe quel nombre, j'ai essayé de suivre le code qui ne fonctionne pas 

  questionText.replace(/[0-9]/g, '');
59
kiran

Très proche, essayez:

questionText = questionText.replace(/[0-9]/g, '');

replace ne fonctionne pas sur la chaîne existante, elle en renvoie une nouvelle. Si vous voulez l'utiliser, vous devez le garder!
De même, vous pouvez utiliser une nouvelle variable:

var withNoDigits = questionText.replace(/[0-9]/g, '');

Une dernière astuce pour supprimer des blocs entiers de chiffres à la fois, mais celui-ci peut aller trop loin:

questionText = questionText.replace(/\d+/g, '');
121
Kobi

Les chaînes sont immuable , c'est pourquoi questionText.replace(/[0-9]/g, ''); sur lui-même fonctionne, mais cela ne change pas la chaîne questionText. Vous devrez assigner le résultat du remplacement à une autre variable String ou à questionText à nouveau.

var cleanedQuestionText = questionText.replace(/[0-9]/g, '');

ou en une fois (avec \d+, voir la réponse de Kobi):

 questionText = ("1 Ding ?").replace(/\d+/g,'');

et si vous souhaitez couper le ou les espaces de début et de fin pendant que vous y êtes:

 questionText = ("1 Ding ?").replace(/\d+|^\s+|\s+$/g,'');
10
KooiInc

Vous êtes remarquablement proche.

Voici le code que vous avez écrit dans la question:

questionText.replace(/[0-9]/g, '');

Le code que vous avez écrit examine effectivement la variable questionText et produit une sortie qui est la chaîne d'origine, mais avec les chiffres remplacés par une chaîne vide.

Cependant, il ne l'assigne pas automatiquement à la variable d'origine. Vous devez spécifier à quoi l'attribuer:

questionText = questionText.replace(/[0-9]/g, '');
8
Spudley

Je veux juste ajouter, puisque cela pourrait intéresser quelqu'un, que vous puissiez aussi penser au problème autrement. Je ne suis pas sûr que cela présente un intérêt, mais je le trouve pertinent.

Ce que je veux dire par l’autre voie, c’est de dire "effacez tout ce qui ne correspond pas à ce que je cherche, c’est-à-dire que si vous voulez seulement le" Ding ", vous pouvez dire:

var strippedText = ("1 Ding?"). replace (/ [^ a-zA-Z]/g, '');

Ce qui signifie fondamentalement "supprimer tout ce qui est nog a, b, c, d .... Z (toute lettre).

1
qrikko

Cela peut être fait sans regex qui est plus efficace:

var questionText = "1 Ding ?"
var index = 0;
var num = "";
do
{
    num += questionText[index];
} while (questionText[++index] >= "0" && questionText[index] <= "9");
questionText = questionText.substring(num.length);

Et en prime, il stocke également le numéro, ce qui peut être utile à certaines personnes.

0
Dan Bray