How do I split a string by a multi-character delimiter in C#?
如果我想使用一个作为单词的分隔符拆分一个字符串怎么办?
例如,
我想拆分
在
http://msdn.microsoft.com/en-us/library/system.string.split.aspx
文档示例:
1 2 3 4 5 6 7 8 9 10 11 | 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); } |
您可以使用regex.split方法,如下所示:
1 2 3 4 5 6 7 | 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"周围包含单词边界。但是请注意,如果您刚刚错误地编写了这个示例,那么string.split可能就足够了。
基于此日志上现有的响应,这简化了实现:)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | 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); } } } |
1 2 3 4 5 | 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"这个词保持不变。
简而言之:
1 |
您可以使用string.replace()将所需的拆分字符串替换为字符串中未出现的字符,然后在该字符上使用string.split来拆分结果字符串以获得相同的效果。
或使用此代码;(相同:新字符串[])
1 |
下面是使用字符串分隔符进行拆分的扩展函数:
1 2 3 4 | public static string[] Split(this string value, string seperator) { return value.Split(new string[] { seperator }, StringSplitOptions.None); } |
使用示例:
1 2 | string mystring ="one[split on me]two[split on me]three[split on me]four"; var splitStrings = mystring.Split("[split on me]"); |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | 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]=xxx@gmail.com=yyy@yahoo.co.in |
1 2 3 4 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)); |