J'ai une chaîne qui contient des mots avec des parenthèses. J'ai besoin de retirer le mot entier de la chaîne. Par exemple: pour l'entrée "car wheels_(four) klaxon"
, le résultat devrait être "car klaxon"
. Est-ce que quelqu'un peut me donner un exemple qui permettrait d'accomplir cela?Comment puis-je supprimer un mot d'une chaîne?
Répondre
Vous pouvez le faire avec des expressions régulières. L'expression régulière dont vous avez besoin est:
"\s?\S+[()]\S+\s?"
Cela supprime un mot contenant soit (ou) ou les deux, et supprime le mot et affaisse les espaces autour. Le match devrait être remplacé par un seul espace.
En C# l'expression régulière pourrait être utilisé comme ceci:
string s = "car wheels_(four) klaxon";
s = Regex.Replace(s, @"\s?\S*[()]\S*\s?", " ");
Je ne suis pas tout à fait sûr de la traduction de VB pour cela, mais nous espérons que vous pouvez comprendre.
légèrement différent:
sed "s/\s\+\S*(.\+)\S*\s\+/ /g" yourfile
Il fonctionne comme ceci:
votrefichier:
car wheels_(four) klaxon
ciao (wheel) hey
foo bar (baz) qux
stack overflow_(rulez)_the world
transformé en:
car klaxon
ciao hey
foo bar qux
stack world
Whoah. Regexs règne une fois de plus sur le monde. http://xkcd.com/208/ – Tonio
Ne fonctionne pas tout à fait. Sur 'foo bar (baz) qux' vous obtenez "foo qux" au lieu de "foo bar qux". Vous devez faire correspondre les non-espaces pour éviter de faire correspondre plusieurs mots. –
Voici un autre cas de test: 'foo ba (r baz qu) x quux.' L'affiche ne précisait pas ce qu'il voulait dans ce cas, donc je ne sais pas quel devrait être le résultat correct, mais nous différons dans nos résultats pour ce cas. –
Si la vitesse est pas un problème et vous voulez éviter la surcompensation expressions régulières, vous pouvez utiliser String.Split sur "" pour créer un tableau de "mots", parcourir chaque mot, remplacer tout ce qui String.Contains "(" avec une chaîne vide, puis utiliser String.Join avec un séparateur de "" pour obtenir vos résultats.
Désolé, impossible d'envoyer le codez, ne disposez pas d'un compilateur VB.NET.
- 1. Supprimer un mot d'une chaîne
- 2. Retirez un peu d'une chaîne avant un mot
- 3. comment supprimer un signe particulier d'une chaîne?
- 4. vérifier une chaîne si avoir un mot
- 5. Imprimer un mot d'une chaîne en python
- 6. Supprimer un caractère d'une chaîne
- 7. Comment supprimer un mot lorsque le curseur est au milieu du mot?
- 8. Comment puis-je récupérer un mot d'une chaîne?
- 9. Comment convertir un mot-clé clojure en une chaîne?
- 10. Comment supprimer une partie de la chaîne en commençant par un caractère spécial (ou un mot) dans ActionScript?
- 11. php: supprimer mot de phrase
- 12. Comment supprimer des caractères particuliers d'une chaîne en utilisant XSLT?
- 13. Comment obtenir le deuxième mot d'une chaîne?
- 14. Comment faire pour supprimer le mot non-ASCII d'une chaîne en C#
- 15. comment supprimer les caractères spéciaux de la fin de chaque mot dans une chaîne?
- 16. Comment supprimer tag html dans une chaîne?
- 17. Comment savoir si un mot est présent COMME MOT dans une chaîne?
- 18. comment remplacer toutes les occurrences d'un mot dans une chaîne avec un autre mot dans java?
- 19. Demander un mot de passe pour désinstaller/supprimer l'application
- 20. Supprimer un mot sur clic avec Jquery et Regex
- 21. Supprimer "@" de la chaîne
- 22. Supprimer() de la chaîne
- 23. Comment supprimer un modèle de chaîne défini dans SSIS?
- 24. Comment puis-je supprimer un caractère de chaîne en PHP?
- 25. Comment supprimer un élément dans une chaîne XML?
- 26. Python: Supprimer un caractère d'une chaîne
- 27. Comment trouver un mot non précédé d'un autre mot spécifique?
- 28. obtenir un mot avant un: - signer une chaîne avec regex
- 29. lire un fichier mot par mot
- 30. Comment supprimer la chaîne de requête?
votre regex vient de me faire peur – JohnIdol
Un gotcha potentiel: ceci correspondra à n'importe quel mot avec une parenthèse même si la parenthèse n'est pas équilibrée. Cela peut ou peut ne pas être désiré. – Welbog
Merci Marc, ça marche bien mais si on a un mot comme "(roue)" ne remplace pas le mot: P –