将C#字符串解析为数组

3

我需要解析例如以下字符串:

"你好,我的名字是鲍里斯,[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"

方括号会一直存在吗? - undefined
2
那么应该如何分割呢?你有一个常用的分隔符(比如逗号)吗? - undefined
1
不是下投票的人,但看起来像是有个人只是为了给所有帖子投反对票而访问了这个链接 :) - undefined
4个回答

8
如果你的字符串中总是有方括号,那么这个方法应该可以解决问题。
string str = "Hello, my name is Boris, [image1.jpg] i like drinking tea [img2.jpg]";
string[] Arr = str.Split(new char[] { '[', ']' }, StringSplitOptions.RemoveEmptyEntries);

1

您可以使用Replace将所有的 "[" 替换为 "]",然后与它们一起使用 Split,就像这样:

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

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

@downvoter,请留言让我知道哪里有问题。 - undefined
不是我点踩,但这个方法行不通。 - undefined
@SriramSakthivel为什么? - undefined
1
这将编译当 ']'。实际上,它在其他情况下也可以工作 +1 - undefined
应该是 string[] strs = str.Split(']'); 很好的解决方案。 - undefined
显示剩余2条评论

0
使用正则表达式:
    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();
    }

0
这应该能解决问题。
string[] strs = Regex.Split(str, "(?<Token>\[.*?\])", RegexOptions.Singleline)

1
模式应该是一个原样字符串字面量(@)。此外,这将导致一个由5个元素而不是4个元素组成的数组。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接