如何在C#中使用多字符分隔符拆分字符串?

时间:2009-07-14 17:42:38

标签: c# .net string

如果我想使用单词分隔符分割字符串怎么办?

例如,This is a sentence

我想分开is并获取Thisa sentence

Java中,我可以将字符串作为分隔符发送,但如何在C#中完成此操作?

10 个答案:

答案 0 :(得分:273)

http://msdn.microsoft.com/en-us/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);
}

答案 1 :(得分:54)

您可以使用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 方法并包含“ ”周围的单词边界。但请注意,如果您只是错误地编写了此示例,则 String.Split 可能就足够了。

答案 2 :(得分:33)

根据这篇文章的现有回复,这简化了实施:)

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);
        }


    }
}

答案 3 :(得分:27)

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]);

编辑:“is”在数组的两侧都填充空格,以保留您希望从句子中删除单词“is”的事实以及单词“this” “保持完整。

答案 4 :(得分:8)

......简而言之:

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

答案 5 :(得分:5)

您可以使用String.Replace()将您想要的分割字符串替换为字符串中没有出现的字符,然后在该字符上使用String.Split将结果字符串拆分为相同的效果。

答案 6 :(得分:4)

或使用此代码; (相同:new String [])

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

答案 7 :(得分:2)

这是一个使用字符串分隔符进行拆分的扩展函数:

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]");

答案 8 :(得分:0)

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="to=xxx@gmail.com=yyy@yahoo.co.in";
string[] tokens = line.Split(new char[] { '=' }, 2, 0);

ans:
tokens[0]=to
token[1]=xxx@gmail.com=yyy@yahoo.co.in

答案 9 :(得分:-5)

string strData = "This is much easier"
int intDelimiterIndx = strData.IndexOf("is");
int intDelimiterLength = "is".Length;
str1 = strData.Substring(0, intDelimiterIndx);
str2 = strData.Substring(intDelimiterIndx + intDelimiterLength, strData.Length - (intDelimiterIndx + intDelimiterLength));