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

问题描述:

如果我想使用一个单词的分隔符来分割字符串,该怎么办?如何在C#中使用多字符分隔符分割字符串?

例如,This is a sentence

我想拆分is并获得Thisa sentence

Java中,我可以发送一个字符串作为分隔符,但是如何在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也将在单词的末尾拆分的“”“这个”,因此为什么我用正则表达式方法,其中包括围绕“”字边界。但是,请注意,如果您错误地编写了此示例,则String.Split可能就足够了。从文档

+0

@编辑:我也不清楚,但你仍然可以使用正常的字符串分割,只是垫空间两侧,如果他的目标是只删除单词“是”。 – ahawker 2009-07-14 17:57:52

+1

这也行不通(至少不是没有更多的努力),因为你不知道空间应该在左边,右边还是两边都出现,而不知道被分割的单词的位置串。 – IRBMe 2009-07-14 18:03:31

+0

似乎过于复杂,因为String.Splity可以让你在一个字符串上分割... – 2009-07-14 18:51:16

您可以使用与string.replace()来取代你所需的分割字符串不字符串中出现,然后用字符串的字符。对该字符进行分割以分割相同效果的结果字符串。

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

编辑:“是”是为了保护你想要的单词的事实填补双方在阵列中的空间“是”从句子和单词删除“本”保持完好。

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

基于这个帖子上现有的响应,这简化了实现:)

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[] arr = "This is a sentence".Split(new string[] { "is" }, 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="[email protected][email protected]"; 
string[] tokens = line.Split(new char[] { '=' }, 2, 0); 

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

或者使用此代码; (同样,新的String [])

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