不能让Messagebox显示列表
本文关键字:列表 显示 Messagebox 不能 | 更新日期: 2023-09-27 18:04:57
我试图有一个MessageBox
出现,显示更改日志在我的c#程序
这是文本文件
当前版本0.2.3.4
添加哈希解码器
试图将代码更改为OOP设计
使用ReSharper清理随机代码
Version 0.1.3.4 - 8/29/2016
在此点之前没有更改日志
目标是获得Current Version 0.2.3.4
和Version 0.1.3.4 - 8/29/2016
之间的文本
我已经尝试过用
下面的代码这样做了Regex changeLogMatch = new Regex("Current Version''s.*?''n(.*?''n)+Version''s.*?''s''-''s''d");
Match changeLogInfo = changeLogMatch.Match(changeLog);
int changeLogCount = Regex.Matches(changeLog, "Current Version''s.*?''n(.*?''n)+Version''s.*?''s''-''s''d").Count;
List<string> changeLogList = new List<string>();
for (int i = 0; i < changeLogCount; i++)
{
changeLogList.Add(changeLogInfo.Groups[1].Captures[i].ToString());
}
string changeLogString = string.Join(Environment.NewLine, changeLogList);
Console.WriteLine(changeLogString);
MessageBox.Show("New Changes" + Environment.NewLine + changeLogString
, "New Version Found: " + newVersion);
我遇到的问题是changeLogString
只显示Added Hash decoder
而没有其他。
你知道我做错了什么吗?
在您的情况下,changeLogCount
始终为1。所以在changeLogList
中将始终是changeLogInfo.Groups[1].Captures[0].ToString()
,它指的是Added Hash decoder
字符串。
您正在检查"Current Version''s.*?''n((.*?''n)+)Version''s.*?''s''-''s''d"
regex,它匹配整个字符串并匹配1次。但第一组(.*?''n)
匹配3次。因此,如果您正在检查完整正则表达式的匹配计数-您将获得1,如果您想获得第一组捕获的数量-您将获得3。
所以你应该用下面的方式修复你的代码:
Regex changeLogMatch = new Regex("Current Version''s.*?''n(.*?''n)+Version''s.*?''s''-''s''d");
Match changeLogInfo = changeLogMatch.Match(changeLog);
string changeLogString = string.Join(Environment.NewLine, changeLogInfo.Groups[1].Captures.OfType<Capture>());
Console.WriteLine(changeLogString);
注意,您不需要遍历捕获—所需的字符串将存储在changeLogString
中。