2011-09-21 10 views
3

Je nom de fichier qui ressemblequelle est la meilleure façon de découper une chaîne

Répertoire \ nom-secondName-blabla.txt

Si je en utilisant la chaîne .split mon code doivent connaître le séparateur que j'utilise, Mais si dans un jour je vais remplacer le séparateur mon code va se casser

Est-ce que le tout construit de façon à diviser pour obtenir le résultat suivant?

Directory 
name 
secondNmae 
blabla 
txt 

Merci

Modifier Ma question est plus générale que le nom de fichier juste divisé, est une chaîne division en général

+0

Couldn n'utilisez-vous pas une fonction qui appelle split et dont l'un de ses arguments est le séparateur? – Mansuro

+1

Man, essayez de chercher un peu SO: http://stackoverflow.com/questions/2742688/getting-file-name-from-the-string http://stackoverflow.com/questions/1105593/get-file http://stackoverflow.com/questions/401304/c-how-do-i-extract-each-folder-name-from-a-path -name-de-uri-string-en-c http://stackoverflow.com/questions/3736462/c-getting-the-folder-name-from-a-path – Samich

+2

Je pense que tout le monde semble ne pas avoir lu cette question correctement! –

Répondre

8

La meilleure façon de diviser un nom est d'utiliser System.IO.Path

Vous n'êtes pas clair sur ce qu'il faut faire avec directory1\directory2\,
mais en général, vous devez utiliser cette classe statique pour trouver le chemin, nom et suffixe pièces. Après que vous aurez besoin de String.Split() pour gérer les séparateurs -, il vous suffira de configurer le (s) séparateur (s) comme paramètre de configuration.

+0

Facile à obtenir le nom de fichier, mais pas ce que l'OP demandait. –

+0

@Henk s'il vous plaît voir ma mise à jour à la question – user956962

+0

B @ Tim: C'est la raison pour laquelle le nom de fichier est en italique –

0
var filepath = @"Directory\name-secondName-blabla.txt"; 
var tokens = filepath.Split(new[]{'\\', '-'}); 
0

Si vous êtes inquiet au sujet de votre changement symbolique de séparation dans l'avenir, le définir comme une constante dans un fichier de paramètres afin que vous suffit de le changer en un seul endroit. Ou, si vous pensez qu'il va changer régulièrement, mettez-le dans un fichier de configuration afin de ne pas avoir à sortir de nouvelles versions à chaque fois.

2

Vous pouvez faire un tableau avec seperators:

string value = "Directory\name-secondName-blabla.txt"; 
char[] delimiters = new char[] { '\\', '-', '.' }; 
string[] parts = value.Split(delimiters, StringSplitOptions.RemoveEmptyEntries); 
Questions connexes