2009-06-09 5 views

Répondre

9
YOUR_STRING.Split('_')[0]

En fait, la méthode de fractionnement renvoie un tableau de chaînes résultant de la division de la chaîne d'origine à toute occurrence du caractère spécifié (s), non compris le caractère auquel la scission était joué.

+0

Comme l'a souligné Mark, c'est une façon très inefficace de le faire. –

+0

C'est la façon la plus simple de faire ceci, la plus intuitive et à moins que l'application ne soit critique pour les performances et répète cette opération encore et encore, cela n'aura pas vraiment d'importance. Quoi qu'il en soit, je suis d'accord que ce n'est pas la solution avec le temps d'exécution le plus bas :) – em70

+0

assurez-vous d'ajouter une validation, qu'il y a un '_' dans la chaîne, si vous le faites dynamiquement plus tard :-) –

1

("WORD1_WORD2_WORD3").Split('_')[0]

devrait retourner "WORD1". Si cela ne fonctionne pas, essayez .Spilt() sur une variable de chaîne avec le contenu que vous avez spécifié.

string str="WORD1_WORD2_WORD3"; 
string result=str.Split('_')[0]; 

Cela renvoie en fait un tableau:

{"WORD1", "WORD2", "WORD3"} 
+0

Vous n'avez pas besoin de crochets autour de la chaîne, vous pouvez simplement faire "" .Split ('_') [0]; –

0

Il existe plusieurs façons. Vous pouvez utiliser Split, Substring. etc. Un exemple avec Split:

Chaîne var = "WORD1_WORD2_WORD3";

Chaîne result = var.Split ('_') [0];

10

Il peut être tentant de dire Split - mais cela implique la création d'un tableau et de nombreuses chaînes individuelles. OMI, la meilleure façon est ici pour la première underscore, et prendre une sous-chaîne:

string b = s.Substring(0, s.IndexOf('_')); // assumes at least one _ 

(modifier) ​​

Si vous faites cela beaucoup, vous pouvez ajouter des méthodes d'extension:

public static string SubstringBefore(this string s, char value) { 
    if(string.IsNullOrEmpty(s)) return s; 
    int i = s.IndexOf(value); 
    return i > 0 ? s.Substring(0,i) : s; 
} 
public static string SubstringAfter(this string s, char value) { 
    if (string.IsNullOrEmpty(s)) return s; 
    int i = s.IndexOf(value); 
    return i >= 0 ? s.Substring(i + 1) : s; 
} 

alors:

string s = "a_b_c"; 
string b = s.SubstringBefore('_'), c = s.SubstringAfter('_'); 
+0

bonne chose que vous avez ajouté votre commentaire :) –

7

si s est la chaîne :

int idx = s.IndexOf('_'); 

if (idx >= 0) 
    firstPart = s.Substring(0,idx); 
+0

+1 parce que nous n'avons pas les problèmes que .Split() peut causer –

Questions connexes