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, '');
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, '');
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,'');
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, '');
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).
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.