如何在C#中使用多字符分隔符分割字符串?
问题描述:
如果我想使用一个单词的分隔符来分割字符串,该怎么办?如何在C#中使用多字符分隔符分割字符串?
例如,This is a sentence
。
我想拆分is
并获得This
和a 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可能就足够了。从文档
答
您可以使用与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)
@编辑:我也不清楚,但你仍然可以使用正常的字符串分割,只是垫空间两侧,如果他的目标是只删除单词“是”。 – ahawker 2009-07-14 17:57:52
这也行不通(至少不是没有更多的努力),因为你不知道空间应该在左边,右边还是两边都出现,而不知道被分割的单词的位置串。 – IRBMe 2009-07-14 18:03:31
似乎过于复杂,因为String.Splity可以让你在一个字符串上分割... – 2009-07-14 18:51:16