如何在C#中使用多字符分隔符分割string?
如果我想用一个单词的分隔符来分割一个string呢?
例如, This is a sentence
。
我想分手is
得到This
和a sentence
。
在Java
,我可以发送一个string作为分隔符,但如何在C#
完成这个?
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); }
你可以使用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 ”的周围包含了单词边界。 但是请注意,如果你错误地写了这个例子,那么String.Split就足够了。
基于对这个post的现有回应,这简化了实现:)
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); } } }
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”保持不变。
您可以使用String.Replace()来replace您所需的拆分string与string中不会出现的字符,然后使用该字符上的String.Split来拆分结果string以获得相同的效果。
…简而言之:
string[] arr = "This is a sentence".Split(new string[] { "is" }, StringSplitOptions.None);
或者使用这个代码; (same:new String [])
.Split(new[] { "Test Test" }, StringSplitOptions.None)
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
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));