2009-06-09 11 views
4

私は文字列: を持っています。 WORD1_WORD2_WORD3区切り文字列から最初のトークンを抽出する

どうすれば文字列からWORD1を得ることができますか?テキストすなわち 実際分割方法がで分割文字を含まない、指定された文字(単数または複数)のいずれかの発生時に元の文字列を分割に起因する文字列の配列を返す

答えて

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

最初の下線の前実施しました。

+0

マークが指摘したように、これは非常に非効率的な方法です。 –

+0

これは最も直感的な方法ですが、最も直感的です。アプリケーションがパフォーマンスに重大な影響を及ぼさない限り、何度も繰り返してその操作を繰り返す必要はありません。とにかく私はそれが最も低い実行時間の解決策ではないことに同意します:) – em70

+0

後で動的に行う場合は、文字列に実際の '_'があることを確認してください: –

1

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

"WORD1" を返す必要があります。それが動作しない場合は、指定した内容の文字列変数で.Spilt()を試してください。

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

これは実際には配列を返します。

​​
+0

文字列のまわりの角かっこ、あなたはちょうど ""を行うことができます。。Split( '_')[0]; –

0

いくつかの方法があります。分割、部分文字列を使用できます。 Splitの例:

文字列var = "WORD1_WORD2_WORD3";

文字列結果= var.Split( '_')[0];

10

Splitと言いたくなるかもしれませんが、それには配列と多数の個々の文字列の作成が含まれます。 IMO、ここでの最適な方法は、最初のアンダースコアを見つけて、部分文字列を取ることです。

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

(編集)

あなたはこのたくさんやっている場合は、あなたには、いくつかの拡張メソッドを追加することができます。

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; 
} 
その後、

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

良いことをあなたのコメントを追加:) –

7

は、文字列の場合:

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

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

私たちは問題がないので、.Split()が発生する可能性があります –

関連する問題