如何拆分特殊字符'##'和'}'

rad*_*aku -1 .net c#

我已经尝试过这里,但这里 仍然没有运气.

文本1:

一些包含}和再次}或者可能}的文字

文本2:

一些文本包含##和##或者##

我的代码

string str1 = "Some text that contained } and again } or maybe }";
// Some time its contained ##

string[] words;
if (str1.Contains("}"))
{
    words = str1.Split("}");
}
else if (str1.Contains ("##"))
{
    words = str1.Split("##");
} else {
    words = null;
}
Run Code Online (Sandbox Code Playgroud)

我有2个错误

'string.Split(params char [])'的最佳重载方法匹配有一些无效的参数

参数'1':无法从'string'转换为'char []'}

Ily*_*nov 6

尝试使用

str1.Split(new [] {"}"}, StringSplitOptions.RemoveEmptyEntries);
Run Code Online (Sandbox Code Playgroud)

str1.Split(new [] {"##"}, StringSplitOptions.RemoveEmptyEntries);
Run Code Online (Sandbox Code Playgroud)

的使用StringSplitOptions.None,如果你想保留空字符串

string.Split仅在下一个签名中将输入作为字符串:Split(String[], StringSplitOptions)Split(String[], Int32, StringSplitOptions).所以至少你需要指定StringSplitOptions一个字符串并将其转换为一个字符串的数组,否则编译器不知道你试图调用什么方法.

您可以通过删除一个if语句来减少逻辑.Split如果没有找到输入字符串的出现,方法不会抛出任何异常.

string str1 = "Some text that contained } and again } or maybe }";

string[] words;
if (str1.Contains("}") || str1.Contains ("##"))
{
    words = str1.Split(new [] {"}", "##"}, StringSplitOptions.RemoveEmptyEntries);

}
else
{
    words = null;
}
Run Code Online (Sandbox Code Playgroud)