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

例如,这是一个句子。

我想分开,得到这个和一句话。

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


当前回答

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

其他回答

你可以使用正则表达式。拆分方法,就像这样:

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

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

编辑:这满足了你给出的例子。注意,一个普通的字符串。Split也会在单词“This”后面的“is”上进行拆分,因此我使用了Regex方法,并在“is”周围包含了单词边界。但是请注意,如果您只是错误地编写了这个示例,那么String。分裂可能就足够了。

...简而言之:

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

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