子串分组字符

时间:2016-03-19 23:33:37

标签: c#

我正在尝试使用子字符串来拉取字符以与不同时间进行比较。我第一次使用的是系统时间,我只使用HH:mm。我第二次拉动文本文件时,它抓取的行看起来像这样:

03182016 21:35:02 ######## END ########

我尝试使用

convert = line.Substring(9,14); //我认为这会给我21:35,但它实际上产生了21:25:02 ####。

如果我理解正确,它会将数字与冒号分组,因为Substring(9,9)给出了21:35:02。我无法改变文本文件,如何拉出前5个数字(21:35)?

4 个答案:

答案 0 :(得分:5)

我认为substring的第二个参数是字符中子字符串的长度,而不是结束位置。如上所述,命令

convert = line.Substring(9,14);

将从第9个位置(从0开始)拉出前14个字符,这就是您获得####符号的原因。如果你想要21:35,试试

convert = line.Substring(9,5);

hh和mm为4个字符,冒号为1个字符。

答案 1 :(得分:2)

第二个参数是长度,而不是结束位置。所以line.Substring(9, 5)会这样做。

为了让您的代码不易出错,我应该建议Split在空格上,然后选择第二项。

答案 2 :(得分:1)

您也可以使用正则表达式:

        Regex rg = new Regex(@"\d{2}:\d{2}");
        string line = "03182016 21:35:02 ######## END ########";

        string time = string.Empty;
        if(rg.IsMatch(line))
            time = rg.Match(line).Value;

这是基于您提供的行格式。

干杯

答案 3 :(得分:0)

convert = line.Substring(9, 5);