Je suis si près d'obtenir cela, mais ce n'est tout simplement pas bien. Tout ce que je voudrais faire, c'est supprimer le caractère r
d'une chaîne. Le problème est qu'il y a plus d'une instance de r
dans la chaîne. Cependant, c'est toujours le caractère à l'index 4 (donc le 5ème caractère).
exemple de chaîne: crt/r2002_2
Ce que je veux: crt/2002_2
Cette fonction de remplacement supprime les deux r
mystring.replace(/r/g, '')
Produit: ct/2002_2
J'ai essayé cette fonction:
String.prototype.replaceAt = function (index, char) {
return this.substr(0, index) + char + this.substr(index + char.length);
}
mystring.replaceAt(4, '')
Cela ne fonctionne que si je le remplace par un autre personnage. Il ne le supprimera pas simplement.
Des pensées?
javascript
string
replace
character
user1293504
la source
la source
Réponses:
remplacera
/r
par l'/
utilisationString.prototype.replace
.Vous pouvez également utiliser l'expression régulière avec un indicateur global (comme suggéré par Erik Reppen & Sagar Gala , ci-dessous) pour remplacer toutes les occurrences par
EDIT: Étant donné que tout le monde s'amuse tellement ici et que user1293504 ne semble pas revenir de sitôt pour répondre à des questions de clarification, voici une méthode pour supprimer le Nème caractère d'une chaîne:
Étant donné que user1293504 a utilisé le nombre normal au lieu d'un nombre indexé à zéro, nous devons supprimer 1 de l'index, si vous souhaitez l'utiliser pour répliquer comment les
charAt
travaux ne soustraient pas 1 de l'index sur la 3e ligne et utilisez à latmp.splice(i, 1)
place.la source
"/"
Une manière javascript fonctionnelle simple serait
mystring = mystring.split('/r').join('/')
simple, rapide, il se remplace globalement et pas besoin de fonctions ou de prototypes
la source
'/'
Il y a toujours les fonctions de chaîne, si vous savez que vous allez toujours supprimer le quatrième caractère:
la source
str.slice(0, 0) + str.slice(1, str.length)
supprime le premier etstr.slice(0, str.length-1) + str.slice(str.length, str.length)
supprime le dernier. (Bien sûr, vous supprimeriez les parties redondantes si vous savez que vous supprimez toujours la première ou la dernière, mais s'il s'agit de variables, elles fonctionnent aussi bien que tout autre index.)Votre premier func a presque raison. Supprimez simplement le drapeau «g» qui signifie «global» (modifier) et donnez-lui du contexte pour repérer le deuxième «r».
Edit: je n'ai pas vu que c'était le deuxième 'r' avant, alors j'ai ajouté le '/'. Nécessite \ / pour échapper au '/' lors de l'utilisation d'un argument regEx. Merci pour les votes positifs, mais j'avais tort, donc je vais corriger et ajouter plus de détails pour les personnes intéressées à mieux comprendre les bases de regEx, mais cela fonctionnerait:
Maintenant pour l'explication excessive:
Lors de la lecture / écriture d'un modèle regEx, pensez en termes de: <un caractère ou un ensemble de caractères> suivi de <un caractère ou un ensemble de caractères> suivi de <...
Dans regEx, <un caractère ou un ensemble de caractères> peut être un à la fois:
Donc, lisez e, suivi de a, suivi de c, etc ...
Ou un seul <un caractère ou un ensemble de caractères> pourrait être des caractères décrits par une classe de caractères:
Ou développé pour correspondre à une quantité de caractères (mais il est préférable de le considérer comme un élément unique en termes de modèle séquentiel):
Alors smoosh un tas ensemble:
Et bien sûr, j'ai trop élaboré, mais mon point était simplement que ceci:
est une série de 3 éléments de motif (une chose suivie d'une chose suivie d'une chose).
Et c'est ainsi:
Aussi farfelu que regEx commence à paraître, tout se décompose en séries de choses (des choses potentiellement multi-caractères) se succédant séquentiellement. Une sorte de point de base, mais qui m'a pris un certain temps pour passer, donc je suis allé trop loin pour l'expliquer ici car je pense que c'est un point qui aiderait l'OP et d'autres nouveaux à regEx à comprendre ce qui se passe. La clé pour lire / écrire regEx est de le décomposer en ces morceaux.
la source
Pour le remplacement global de '/ r', ce code a fonctionné pour moi.
la source
Corrigez simplement votre
replaceAt
:Je l'appellerais à la
removeAt
place. :)la source
char.length
est zéro. Vous devez ajouter1
dans ce cas afin de sauter le caractère.la source
replaceAt
ne fonctionne pas. Ce devrait être un commentaire à la question d'origine au lieu d'une réponse. :)Any thoughts?
.Si c'est toujours le 4e caractère de votre chaîne, vous pouvez essayer:
la source
En effet, lorsque
char
est égal à""
,char.length
vaut 0, vos sous-chaînes se combinent pour former la chaîne d'origine. En suivant votre tentative de code, les éléments suivants fonctionneront:la source
Créer une fonction comme ci-dessous
Pour remplacer donnez le caractère comme ci-dessous
et pour supprimer le caractère à un index défini, donnez le deuxième paramètre comme chaîne vide
la source
Si vous souhaitez simplement supprimer un seul caractère et si vous connaissez l'index d'un caractère que vous souhaitez supprimer, vous pouvez utiliser la fonction suivante:
la source
Je n'aime pas utiliser la fonction de remplacement pour supprimer des caractères de la chaîne. Ce n'est pas logique de le faire comme ça. Habituellement, je programme en C # (Sharp), et chaque fois que je veux supprimer des caractères de la chaîne, j'utilise la méthode Remove de la classe String, mais aucune méthode Replace, même si elle existe, car lorsque je suis sur le point de supprimer, je supprime, pas de remplacement. C'est logique!
En Javascript, il n'y a pas de fonction de suppression pour la chaîne, mais il y a une fonction substr. Vous pouvez utiliser la fonction substr une ou deux fois pour supprimer des caractères de la chaîne. Vous pouvez créer la fonction suivante pour supprimer les caractères au début de l'index jusqu'à la fin de la chaîne, tout comme la première méthode c # surcharge String.Remove (int startIndex):
et / ou vous pouvez également créer la fonction suivante pour supprimer les caractères au début de l'index et du décompte, tout comme la seconde méthode c # surcharge String.Remove (int startIndex, int count):
et puis vous pouvez utiliser ces deux fonctions ou l'une d'entre elles pour vos besoins!
Exemple:
Sortie: crt / 2002_2
Atteindre des objectifs en faisant des techniques sans logique peut provoquer des confusions dans la compréhension du code et des erreurs futures, si vous faites cela beaucoup dans un grand projet!
la source
String.prototype.replace
, qui fait partie de l'API de base. De plus, comprendre la suppression comme un cas spécial de remplacement est assez logique en ce qui concerne la programmation. Vous ne devriez pas essayer de faire en sorte que votre API comprenne tous les mots du dictionnaire anglais, vous devriez essayer de réduire votre API à sa base orthogonale minimale.La fonction suivante a fonctionné le mieux pour mon cas:
la source
Le moyen le plus court serait d'utiliser une épissure
la source
c
et le"
)Vous pouvez utiliser ceci:
if ( str[4] === 'r' ) str = str.slice(0, 4) + str.slice(5)
Explication:
if ( str[4] === 'r' )
Vérifiez si le 5ème caractère est un
'r'
str.slice(0, 4)
Tranchez la chaîne pour tout récupérer avant la
'r'
+ str.slice(5)
Ajoutez le reste de la chaîne.
Minifié:
s=s[4]=='r'?s.slice(0,4)+s.slice(5):s
[37 octets!]DÉMO:
la source
la source
Il s'agit d'une amélioration de la réponse simple (omettez la longueur)
Afficher l'extrait de code
la source
En C # (Sharp), vous pouvez créer un caractère vide sous la forme '\ 0'. Vous pouvez peut-être faire ceci:
Recherchez sur google ou surfez sur le contenu et vérifiez si javascript vous permet de créer des caractères vides, comme le fait C #. Si oui, alors apprenez à le faire, et peut-être que la fonction replaceAt fonctionnera enfin, et vous obtiendrez ce que vous voulez!
Enfin, ce caractère «r» sera supprimé!
la source