Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何拆分包含方括号和空格的字符串_C#_Arrays_String_Split_Format - Fatal编程技术网

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
看到一个或一个