帮助解析字符串

nav*_*100 6 c#

我试图解析字符串,看看":"后的值是否为整数.如果它不是整数,则从字符串中删除"Test:M".

这是我的示例字符串.

string testString = "Test:34,Test:M";
Run Code Online (Sandbox Code Playgroud)

我需要的结果 testString = "Test:34"

string[] data = testString.Split(',');
for (int i = 0; i < data.Length; i++)
{
    string[] data1 = data[i].Split(':');
    int num = 0;
    if(Int32.TryParse(data1[1], out num))
    {

    }
}
Run Code Online (Sandbox Code Playgroud)

Yuc*_*uck 5

你快到了.试试这个:

    var builder = new StringBuilder();
    string[] data = testString.Split(',');
    for (int i = 0; i < data.Length; i++)
    {
        string[] data1 = data[i].Split(':');
        int num = 0;
        if(Int32.TryParse(data1[1], out num))
        {
            builder.Append(data[i]);
            buidler.Append(',');
        }
    }

    testString = builder.ToString();
Run Code Online (Sandbox Code Playgroud)

编辑:添加","以保持输出中的逗号...

编辑:采取@Groo建议避免隐式字符串连接.

  • 由于您使用的是`StringBuilder`,因此您也可以在单独的行中编写`builder.Append(',');`,以避免不必要的连接.此外,在结果字符串的末尾会有一个逗号,因此`String.Join`可能是一个更好的解决方案. (2认同)

Jus*_*ner 4

您可以继续使用循环结构,但我个人更喜欢 LINQ 的外观:

var dummy = 0;

var intStrings =
    testString.Split(',')
        .Where(s => s.Contains(":") && int.TryParse(s.Split(':')[1], out dummy))
        .ToArray();

var result = String.Join(",", intStrings);
Run Code Online (Sandbox Code Playgroud)