C# TrimStart avec le paramètre de chaîne de
Je suis à la recherche de Chaîne de méthodes d'extension pour TrimStart()
et TrimEnd()
qui acceptent un paramètre de chaîne.
Je pourrais construire un moi-même mais je suis toujours intéressé à voir comment d'autres gens à faire des choses.
Comment cela peut-il être fait?
- Votre question n'est pas très claire. Quel doit être le paramètre de chaîne de faire exactement en fonction trim? (En supposant que vous n'êtes pas en se référant à la obligatoire dans cette chaîne de' la syntaxe de la méthode d'extension)
- Donc, vous voulez deux fonctions avec les mêmes fonctionnalités que TrimStart/TrimEnd | Ou vous voulez un qui va priver l'entrée des caractères à partir du début/de la fin?
- Oui, avec les mêmes fonctionnalités que TrimStart et TrimEnd, mais accepte une chaîne de caractères au lieu d'un char.
- Et pourquoi voulez-vous que?
- La chaîne dans la .Net a Garniture, TrimEnd et TrimStart, ne voulez-vous pas les utiliser? ou êtes-vous désireux de voir comment cela peut être fait comme un exercice d'apprentissage?
Vous devez vous connecter pour publier un commentaire.
De couper toutes les occurrences de l' (correspondance exacte) chaîne de caractères, vous pouvez utiliser quelque chose comme ce qui suit:
TrimStart
TrimEnd
De couper l'un des personnages dans trimChars depuis le début/la fin de la cible (par exemple,
"foobar'@"@';".TrimEnd(";@'")
sera de retour"foobar"
), vous pouvez utiliser les éléments suivants:TrimStart
TrimEnd
string.ToCharArray()
pointe.TrimStart/End(trimChars.ToCharArray());
devrait vraiment être supprimé. Qui sera à peu près jamais fonctionner comme prévu sauf un naïf tester, puis à corrompre les chaînes dans la production de l'utilisation.trimString == ""
, pas aussi sûr que vous voulez toujours"12123".TimeStart("12") == "3"
.TrimStart et TrimEnd prend un tableau de caractères. Cela signifie que vous pouvez passer dans une chaîne de caractères comme un char array comme ceci:
Donc je ne vois pas la nécessité d'une surcharge qui prend un paramètre de chaîne.
myString="Sammy"
ettrimChars="Sam"
il sera de retour `"y", mais le résultat attendu est "mon". Donc, il garnitures de trop, et ne concerne pas la garniture mot en tant que tel.Je pensais que la question était d'essayer de découper une chaîne de caractères à partir du début d'une chaîne plus longue.
Par exemple, si j'avais la chaîne "hellohellogoodbyehello", si vous avez essayé d'appeler TrimStart("bonjour") vous reviendra "goodbyehello".
Si c'est le cas, vous pouvez utiliser le code suivant:
Ce ne serait pas super efficace si vous avez besoin de faire beaucoup de cordes pour la coupe, mais si c'est juste pour quelques cas, il est simple et fait le travail.
toTrim.length
, sans le-1
droit?Pour correspondre à toute la chaîne et de ne pas allouer plusieurs sous-chaînes, vous devez utiliser la syntaxe suivante:
if (source == null){return null;}
dans mon Application. Je pense que c'est mieux de choisir dans ce cas.de dotnetperls.com,
Il n'est pas construit en fonction en C# mais vous pouvez écrire vos propres extensions qui se comportent exactement de la façon que vous attendez.
Noter qu'avec IndexOf /LastIndexOf, vous pouvez choisir si elle est sensible à la casse /culture sensible ou pas.
J'ai implémenté la fonctionnalité "répétitif mic" ainsi.
Il y a une fonction
TrimStr(..)
de traiter avec les deux versions, en plus de trois fonctions de la mise en œuvre de.TrimStart(...)
,.TrimEnd(...)
et.Trim(..)
pour la compatibilité avec le .NET garnitures:Essayez-la dans DotNetFiddle
Maintenant, vous pouvez simplement l'utiliser comme
qui crée la sortie
Je suis en supposant que vous dire que, par exemple, pour la chaîne "HelloWorld" et l'appel de la fonction de "trim" la commencer par un "Bonjour" vous seriez gauche avec le "Monde". Je dirais que c'est vraiment une sous-chaîne de l'opération que vous êtes en train de retirer une partie de la chaîne de longueur connue, plutôt que d'une opération de découpage qui supprime un inconnu de la longueur de la chaîne.
En tant que tel, nous avons créé un couple de méthodes d'extension nommée
SubstringAfter
etSubstringBefore
. Il serait sympa de les avoir dans le cadre, mais ils ne sont pas si vous avez besoin de mettre en œuvre eux-mêmes. N'oubliez pas deStringComparison
paramètre, et d'utiliserOrdinal
que la valeur par défaut si vous le rendre facultatif.Si vous n'en voulez un qui n'a pas utiliser le construit en garniture fonctions pour quelque raison que ce soit, en supposant que vous voulez une chaîne d'entrée à utiliser pour la coupe d'tels que " ~!" à être essentiellement le même que le construit en TrimStart avec [' ', '~', '!']
Fonction de la garniture de début/la fin d'une chaîne de caractères avec un paramètre de chaîne, mais une seule fois (pas de boucle, de ce seul cas est de plus en plus populaire, la boucle peut être ajouté avec un supplément de param pour la déclencher) :
Comme mentionné précédemment, si vous souhaitez mettre en œuvre la "boucle " while" approche, assurez-vous de vérifier pour la chaîne vide sinon, il peut faire une boucle pour toujours.