我如何分割一个字符串由一个多字符分隔符在c# ?

如果我想使用一个字作为分隔符分割字符串,该怎么办?

例如,This is a sentence

我想在is上进行拆分,得到Thisa sentence

Java中,我可以发送一个字符串作为分隔符,但在C#中如何实现这一点?

275707 次浏览

你可以使用正则表达式。分裂方法,类似这样:

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


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

编辑:这满足了你给出的例子。注意,普通的字符串。分裂也会在单词“This”末尾的“”上进行分割,因此我使用了正则表达式方法,并在“”周围包含了单词边界。但是请注意,如果你只是写错了这个例子,那么字符串。分裂可能就足够了。

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

您可以使用string . replace()将所需的分割字符串替换为字符串中不存在的字符,然后使用string。在该字符上拆分以拆分结果字符串以获得相同的效果。

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”保持完整的事实。

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="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

或者使用这个代码;(相同:new String[])

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

下面是一个使用字符串分隔符进行分割的扩展函数:

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