拆分并验证包含括号,逗号和整数的文本

时间:2016-03-17 09:27:07

标签: validation c#-4.0 split data-manipulation

如何拆分仅包含括号,逗号和3个整数的文本。例如:

View

我还要验证它看起来像上面那样。

2 个答案:

答案 0 :(得分:1)

这是一个非正则表达式解决方案,使用字符串方法和LINQ,我更喜欢:

string text = "{5,40,30}";
bool valid = text.StartsWith("{") && text.EndsWith("}");
int[] integers = {};

if (valid)
{
    integers = text.Trim('{', '}').Split(',')
        .Select(s => s.TryGetInt32())
        .Where(nullInt => nullInt.HasValue)
        .Select(nullInt => nullInt.Value)
        .ToArray();
    valid = integers.Length == 3;
}

使用我在LINQ查询中使用的这个方便的扩展方法从Nullabel<int>获取string,与int.TryParse类似,但int?

public static int? TryGetInt32(this string item)
{
    int i;
    bool success = int.TryParse(item, out i);
    return success ? (int?)i : (int?)null;
}

答案 1 :(得分:1)

使用正则表达式尝试此操作。

 var testString = "12,23,{23,23},23,{51,22,345}{{]}1123,{12,12,232,123}{{33,33,33}}";

 var regex = new Regex(@"{\d+,\d+,\d+}");
 var matches = regex.Matches(testString);

匹配后上述测试字符串的输出为

{51,22,345}{33,33,33}

enter image description here