0

我有一个关于拆分字符串的问题并将其放在 DataTable 中。我怎么知道第二个数组是字符串还是数字?

我有一个包含许多这样的字符串的文本:

 text : ...
        abc 123 def 1 \"ok lo\" ;
        abc def 1 \"ok lo\" ;
        ...

数组2:

 tmpList[0] = abc
 tmpList[1] = 123
 tmpList[2] = def
 tmpList[3] = 1 \"ok lo\"

数组1:

 tmpList[0] = abc
 tmpList[1] = def
 tmpList[2] = 1 \"ok lo\

为了找到所有以 abc 开头的字符串,我做了:

        StreamReader fin = new StreamReader(userSelectedFilePath1);
        string tmp = "";
        while ((tmp = fin.ReadLine()) != null)
        {
        if (tmp.StartsWith("abc "))
            {
              var tmpList1 = tmp.Split(new[] { '"' }).SelectMany((s, i) =>
                {
                    if (i % 2 == 1) return new[] { s };
                    return s.Split(new[] { ' ', ';', ',' }, StringSplitOptions.RemoveEmptyEntries);
                }).ToList();

                 table.Rows.Add(new object[] { tmpList1[0], tmpList1[1], tmpList1[2], tmpList1[3]}); 

            }

        }

使用此代码,我可以找到以 abc 开头的字符串,拆分并放入 DataTable。我怎么知道第二个索引是字符串还是整数?因为我所做的我对第二个索引有一个错误,它分裂不正确。我考虑if(tmp.StartsWith(abc NUMBER?)) else做上面的代码

4

1 回答 1

0

当您执行 String.Split() 时,数组中的所有值也将是字符串,因此在您的 ABC 示例中:

tmpList[1] = 123 // this is incorrect as the value is an int

这应该是:

tmpList[1] = "123" // value is a string

然后你可以做的是尝试将值转换为一个 int,如果它失败了,你知道它不是一个 int:

int number;
bool result = Int32.TryParse(tmpList[1], out number);
if (result) {
    // your code for if the value is a number        
}
else {
    // your code for if the value is not a number
}

从这里复制的代码示例。

于 2012-12-13T16:17:34.170 回答