web-dev-qa-db-ja.com

C#で文字列を複数文字の区切り文字で分割する方法

単語の区切り文字を使用して文字列を分割したい場合はどうすればいいですか?

たとえば、This is a sentenceです。

isに分割してThisa sentenceを取得したいです。

Javaでは、区切り文字として文字列を送信できますが、C#でこれを達成するにはどうすればよいですか。

223
Saobi

http://msdn.Microsoft.com/ja-jp/library/system.string.split.aspx

ドキュメントからの例:

string source = "[stop]ONE[stop][stop]TWO[stop][stop][stop]THREE[stop][stop]";
string[] stringSeparators = new string[] {"[stop]"};
string[] result;

// ...
result = source.Split(stringSeparators, StringSplitOptions.None);

foreach (string s in result)
{
    Console.Write("'{0}' ", String.IsNullOrEmpty(s) ? "<>" : s);
}
274
bruno conde

あなたは Regex.Split メソッドを使うことができます。

Regex regex = new Regex(@"\bis\b");
string[] substrings = regex.Split("This is a sentence");

foreach (string match in substrings)
{
   Console.WriteLine("'{0}'", match);
}

編集:これはあなたが与えた例を満たしています。通常のString.Splitも、単語 "This"の最後にある "is"で分割されます。なぜ私はRegexメソッドを使い、 "is"の周りにWordの境界を含めました。ただし、この例を誤って書いただけの場合は、String.Splitで十分でしょう。

54
IRBMe

この記事に対する既存の回答に基づいて、これにより実装が単純化されます。

namespace System
{
    public static class BaseTypesExtensions
    {
        /// <summary>
        /// Just a simple wrapper to simplify the process of splitting a string using another string as a separator
        /// </summary>
        /// <param name="s"></param>
        /// <param name="pattern"></param>
        /// <returns></returns>
        public static string[] Split(this string s, string separator)
        {
            return s.Split(new string[] { separator }, StringSplitOptions.None);
        }


    }
}
33
eka808
string s = "This is a sentence.";
string[] res = s.Split(new string[]{ " is " }, StringSplitOptions.None);

for(int i=0; i<res.length; i++)
    Console.Write(res[i]);

編集:あなたはのみ単語 "を"文から削除し、単語 "this"をそのままにしておくという事実を保持するために、 "is"の両側にスペースを入れてスペースを埋めます。無傷。

28
ahawker

...要するに:

string[] arr = "This is a sentence".Split(new string[] { "is" }, StringSplitOptions.None);
8
ParPar

String.Replace()を使用して、目的の分割文字列を文字列に含まれていない文字に置き換えてから、その文字に対してString.Splitを使用して、同じ効果を得るために結果の文字列を分割できます。

5
Paul Sonier

またはこのコードを使用してください。 (同じ:new String [])

.Split(new[] { "Test Test" }, StringSplitOptions.None)
4
Cagdas

これは、文字列の区切り文字を使って分割する拡張機能です。

public static string[] Split(this string value, string seperator)
{
    return value.Split(new string[] { seperator }, StringSplitOptions.None);
}

使用例

string mystring = "one[split on me]two[split on me]three[split on me]four";
var splitStrings = mystring.Split("[split on me]");
2
SteveD
var dict = File.ReadLines("test.txt")
               .Where(line => !string.IsNullOrWhitespace(line))
               .Select(line => line.Split(new char[] { '=' }, 2, 0))
               .ToDictionary(parts => parts[0], parts => parts[1]);


or 

    enter code here

line="[email protected][email protected]";
string[] tokens = line.Split(new char[] { '=' }, 2, 0);

ans:
tokens[0]=to
token[1][email protected][email protected]
0
Prabu