C# 如何拆分包含方括号和空格的字符串
我正在尝试拆分以下字符串:C# 如何拆分包含方括号和空格的字符串,c#,arrays,string,split,format,C#,Arrays,String,Split,Format,我正在尝试拆分以下字符串: "add galaxy [Milky way] elliptical 13.2B" 我想要实现的结果数组应该包含以下字符串: "add","galaxy","Milky way","eliptical","13.2B" 我尝试使用string.Split()并尝试了不同的方法参数,但没有达到我想要的效果 我怎样才能达到这个结果 编辑: 我找到了一
"add galaxy [Milky way] elliptical 13.2B"
我想要实现的结果数组应该包含以下字符串:
"add","galaxy","Milky way","eliptical","13.2B"
我尝试使用string.Split()并尝试了不同的方法参数,但没有达到我想要的效果
我怎样才能达到这个结果
编辑:
我找到了一种使用正则表达式的方法
@"[A-Za-z0-9.]+|(#.*?#)|(\[.*?\])"
这里有一个快速而肮脏的解决方案。但不考虑多个空格或多个嵌套
[[[]]]
的可能性
string[]拆分(字符串s)
{
列表=新列表();
int start=0;
int end=0;
bool-inBlock=false;
用于(;结束开始)
添加(s.Substring(start,end-start));
return list.ToArray();
}
除了使用拆分,您还可以使用
输出
add
galaxy
Milky way
elliptical
13.2B
test test
add
galaxy
Milky way
elliptical
13.2B
test test
如果希望使用该结果,可以使用模式中的捕获组(在外部的
#
或方括号内)将分隔符保留在输出中,并删除数组中的空条目
string pattern = @"([A-Za-z0-9.]+)|#([^#]+)#|\[([^][]+)]";
string input = @"add galaxy [Milky way] elliptical 13.2B #test test #";
string[] items = Regex.Split(input, pattern).Where(x => !string.IsNullOrWhiteSpace(x)).ToArray();
foreach (string item in items)
{
Console.WriteLine(item);
}
输出
add
galaxy
Milky way
elliptical
13.2B
test test
add
galaxy
Milky way
elliptical
13.2B
test test
看到一个或一个