我正在尝试使用子字符串来拉取字符以与不同时间进行比较。我第一次使用的是系统时间,我只使用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)?
答案 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);