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

如何用C#中的多字符分隔符拆分字符串?,c#,.net,string,C#,.net,String,如果我想使用一个单词分隔符分割一个字符串,该怎么办 例如,这是一个句子 我想在is上拆分,得到这个和一个句子 在Java中,我可以发送一个字符串作为分隔符,但在C#中如何实现这一点?您可以使用该方法,类似于以下内容: Regex regex = new Regex(@"\bis\b"); string[] substrings = regex.Split("This is a sentence"); foreach (string match in substrings) { Conso

如果我想使用一个单词分隔符分割一个字符串,该怎么办

例如,
这是一个句子

我想在
is
上拆分,得到
这个
一个句子

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

您可以使用该方法,类似于以下内容:

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可能就足够了。

文档中的示例:

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 source=“[stop]ONE[stop][stop]TWO[stop][stop][stop]THREE[stop][stop]”;
字符串[]stringSeparators=新字符串[]{“[stop]”};
字符串[]结果;
// ...
结果=source.Split(StringSeparator、StringSplitOptions.None);
foreach(结果中的字符串s)
{
Write(“{0}”,String.IsNullOrEmpty(s)?”:s);
}
您可以使用String.Replace()将所需的拆分字符串替换为字符串中未出现的字符,然后使用该字符上的String.split拆分结果字符串以获得相同的效果。

String s=“这是一个句子。”;
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[]res=s.Split(新字符串[]{“is”},StringSplitOptions.None);
对于(inti=0;i基于此帖子上的现有回复,这简化了实现:)

名称空间系统
{
公共静态类基类
{
/// 
///只是一个简单的包装器,它可以简化使用另一个字符串作为分隔符拆分字符串的过程
/// 
/// 
/// 
/// 
公共静态字符串[]拆分(此字符串为s,字符串分隔符)
{
返回s.Split(新字符串[]{separator},StringSplitOptions.None);
}
}
}
…简言之:

string[] arr = "This is a sentence".Split(new string[] { "is" }, 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]");

这实际上返回了问题中给出的示例:“Th”“a句子”。也许这是他真正想要的,但这不是他指定的。这只是一个例子。。。要点是:有一个String.Split将字符串作为分隔符。是的,但它不符合问题指定的要求。您必须使用更聪明的方法来获得指定的输出。现在,指定的问题是否真的是提问者想要的是另一个问题,但是这里提出的问题不能简单地用String.Split.来回答,仍然不起作用。如果在要拆分的单词中包含空格,则它们不会包含在输出中。如果您检查问题中给出的示例,您会注意到它们实际上包含空格。拆分“是”会给你“这个”和“一个句子”,而不是“这个”和“一个句子”。注意“This”结尾和“a句子”开头的细微空格。同样,这个答案可能是发问者真正想要的,但不是他问的,我重复一遍,是字符串。斯普利特不会轻易解决这个问题。@IRBMe你读过这个问题了吗我想就“是”一事分道扬镳。所以我会得到“这个”和“一个句子”。看到结果中的空格了吗???这就是拆分的作用。@EDIT:我也不确定,但如果他的目标是只删除“is”一词,你仍然可以使用普通的字符串拆分,只在两边填充空格。这也不起作用(至少不需要付出很多努力),因为你不知道空格是否应该放在左边,在不知道被拆分的单词在字符串中的位置的情况下使用右边或两者。似乎作为字符串过于复杂。Splity允许您已经在字符串上拆分了…我已经在对我的答案的编辑中、在上面的注释中以及在对另一个答案的3个注释中对此进行了说明。对于问题中提供的示例,String.Split不起作用。我不会再重复我自己解释为什么。如果您想知道,可以阅读所有其他注释。请注意,regex split方法不会删除变量上的前置分隔符和尾随分隔符…:(在发布代码之前,您可能应该首先尝试通过编译器运行它,除非您指出您没有。第一行缺少分号,并且没有定义str1和str2。更不用说代码实际上并没有按照OP的要求工作。此代码将其分为“Th”和“更容易”两部分。).1,这需要一个扩展方法。这不是一个内置重载,这简直太傻了。@ToddMenier“几乎”是什么意思?
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
.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]");