C# String 处理非定界字符串列表

标签 c# string

这里是有问题的字符串的一个例子:

[952,M] [782,M] [782] {2[373,M]} [1470] [352] [235] [234] {3[610]}{3[380]} [128] [127]

我已经添加了空格,但它确实无助于分割。我想要做的是将方括号中的每个“字段”添加到字符串列表中。我可以处理的下一个问题是一些字段也有一个逗号分隔的部分,我可以在事后拆分。真正的问题在于大括号。例如{2[373,M]} 方括号外的数字是方括号的重复。

在我的一生中,我想不出一种方法可以始终如一地将行拆分为字符串列表。

准代码如下:

for(i = 0 to string.length)
{
    if string.substring(i,1) = "]"
        int start1 = i
    elseif string.substring(i,1)="["
        int start1 = i
    elseif string.substring(i,1) = "{"
        int start2 = i
    elseif string.substring(i,1) = "}"
        int end2 = i
}

我考虑过使用上面的代码思路来对每个“字段”进行子字符串化,但大括号也包含方括号。任何想法将不胜感激。

最佳答案

var s = "[952,M] [782,M] [782] {2[373,M]} [1470] [352] [235] [234] {3[610]}{3[380]} [128] [127]";

var s2 = Regex.Replace(s, @"\{(\d+)(\[[^]]+\])\}", m => string.Concat( 
    Enumerable.Repeat(m.Groups[2].Value, int.Parse(m.Groups[1].Value))));

var a = s2.Split("[] ".ToArray(), StringSplitOptions.RemoveEmptyEntries);

// s2 = "[952,M] [782,M] [782] [373,M][373,M] [1470] [352] [235] [234] [610][610][610][380][380][380] [128] [127]"
// a = {"952,M","782,M","782","373,M","373,M","1470","352","235","234","610","610","610","380","380","380","128","127"}

关于C# String 处理非定界字符串列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39605032/

相关文章:

java - 反转字符串数组中的字符

java - 输出-1在循环中变成斜杠

c# - 我的自定义代理服务器上的 SSL (https) 错误

c# - 使用 WPF 为多个动态皮肤字典创建别名颜色定义

c# - .NET : Double-click event in TabControl

c# - C#中的MDI子窗体问题

c# - 使用 Entity Framework 更新 DBContext 类中的创建和修改日期字段

Python 按频率对文件进行排序

ios - 在结构上使用 userdefaults

c - 指针和整数比较警告 C