2010-07-15 3 views
23

Ce que j'ai est un fichier texte géant qui contient un tas de chaînes qui sont séparées par \. Le problème pour moi est qu'il peut y avoir 5 \ ou 4 \ ou 3 \.Chaîne fractionnée par le dernier séparateur

Ce dont j'ai besoin pour tirer le dernier \, peu importe combien d'entre eux il y a. Toute aide est appréciée.

Exemples:

 
I\need\this 
I\want\line\this 
Hello\give\me\all\this 

je besoin du mot this par exemple, mais de toute évidence, il n'y a pas que le mot this.

+0

d'une chaîne sans « \ », si la fonction retourne la chaîne entière ou une chaîne vide ? par exemple. Passez-le "Bonjour", devrait-il retourner "Bonjour" ou ""? –

Répondre

53
string last = inputString.Substring(inputString.LastIndexOf('\\') + 1); 
+0

+1: Avec la mise en garde que vous vérifiez une chaîne vide d'abord 'if (! string.IsNullOrEmpty (inputString))', et que s'il n'y a pas de "\" dans la chaîne, alors vous voulez la chaîne entière :) –

+11

La vérification de null est correcte, devrait toujours vérifier cela. La bonne chose à propos de LastIndexOf (..) + 1, est que LastIndexOf (..) retournera -1 pour un caractère qui n'a pas pu être trouvé, donc le résultat net est la Substring est prise à partir de la position 0, qui est le début de la chaîne, donc la chaîne entière est retournée. –

+1

D'accord, sur tous les points, mais l'exigence peut bien être que s'il n'y a pas de "\" qu'une chaîne vide est retournée. Je dis juste que l'on devrait vérifier quel est le comportement requis. –

18
string myString = inputString.Split('\\').Last(); 
+5

.Règle 34 - S'il existe, il y a LINQ pour cela. :-) –

+1

Peut-être devrait être 'LastOrDefault()' pour plus de sécurité –

+1

Vraiment? J'aurais pensé le pire des cas (inputstring == chaîne.Empty), 'inputString.Split ('\\')' retournerait toujours un tableau d'une chaîne, ce qui bien sûr == string.Empty – Flynn1179

6

presque oublié celui-ci (bien qu'il soit un peu culotté):

string result = Path.GetFilename(input);

+0

Ceci ne fournit pas de réponse à la question. Pour critiquer ou demander des éclaircissements à un auteur, laissez un commentaire sous son article. – lxg

+1

Il a été marqué en raison de la qualité inférieure. Et c'est en effet, cela ne fonctionne que sur Windows. (Je me rends compte que la question concerne le C#, qui est habituellement utilisé dans les environnements Windows, mais il peut être porté sur d'autres plateformes via Mono.) – lxg

+3

Je reconnais que le fait que cela fonctionne seulement sur Windows est probablement pertinent, mais ce n'est pas vraiment un argument justifiable pour prétendre que c'est de mauvaise qualité. La plupart des réponses ne fonctionneront pas dans certaines circonstances. En fait, l'OP n'a pas expliqué pourquoi il voulait faire cela, il était tout à fait possible que l'extraction d'un nom de fichier soit exactement ce qu'il voulait faire, certainement cela pourrait être idéal pour un autre lecteur qui cherche une réponse pour cette raison. – Flynn1179

Questions connexes