C#字符串解析到数组

C#字符串解析到数组,c#,string,parsing,C#,String,Parsing,例如,我需要解析这样的字符串: “你好,我叫鲍里斯,[image1.jpg]我喜欢喝茶[img2.jpg]” 我想得到字符串数组: Arr[0] ="Hello, my name is Boris, " Arr[1] ="image1.jpg" Arr[2] =" i like drinking tea " Arr[3] ="img2.jpg" 您可以使用Replace将所有“[”变为“]”,然后用它们拆分,如下所示: str = str.Replace("[", "]"); string

例如,我需要解析这样的字符串: “你好,我叫鲍里斯,[image1.jpg]我喜欢喝茶[img2.jpg]”

我想得到字符串数组:

Arr[0] ="Hello, my name is Boris, "
Arr[1] ="image1.jpg"
Arr[2] ="  i like drinking tea "
Arr[3] ="img2.jpg"

您可以使用
Replace
将所有“[”变为“]”,然后用它们拆分,如下所示:

str = str.Replace("[", "]");

string[] Arr = str.Split(']');

使用正则表达式:

    var regex = new Regex(@"(.+)\[(.+)\](.+)\[(.+)\]");
    Match match = regex.Match("");
    if (match.Success) {
        match = match.NextMatch();
        string[] parts = match.Groups.Cast<Group>().Where(x => x.Success).Select(x => x.Value).ToArray();
    }
var regex=new regex(@“(.+)\[(.+)\](.+)\](.+)\[(.+)\]);
Match=regex.Match(“”);
如果(匹配成功){
match=match.NextMatch();
string[]parts=match.Groups.Cast()。其中(x=>x.Success)。选择(x=>x.Value)。ToArray();
}

如果字符串中总是有方括号,那么这应该可以实现

string str = "Hello, my name is Boris, [image1.jpg] i like drinking tea [img2.jpg]";
string[] Arr = str.Split(new char[] { '[', ']' }, StringSplitOptions.RemoveEmptyEntries);

这应该能奏效

string[] strs = Regex.Split(str, "(?<Token>\[.*?\])", RegexOptions.Singleline)
string[]strs=Regex.Split(str,(?\[.*.?\]),RegexOptions.Singleline)

方括号会一直存在吗?它应该如何分割?你是否有一个常用的分隔符(比如逗号?)而不是downvoter,但似乎有人访问此链接只是为了对所有帖子进行downvoter:)@downvoter,请留下一条消息,这样我就知道有什么问题了不是我的downvoter,但这不会发生work@SriramSakthivel为什么?这将在
']
时编译。实际上,它在其他情况下可以工作+1它应该是
string[]strs=str.Split(']')很好的解决方案。模式应该是一个verbatin字符串文本(
@
)。此外,这将导致一个由5个元素组成的数组,而不是4个元素。@downvoter:有注释吗?)