我在 C# 中使用正则表达式时遇到问题,或者至少我认为这将是我的问题的解决方案,例如,我有这个字符串:
"转到原始预算屏幕,\n1- 检查原始预算是否为原始预算 CV\n- 检查剩余预算是否为剩余预算 CV\n- 检查新字段汇率\n- 检查新字段原始预算 FC \n- 检查新字段 Remaining Budget FC \n2- 检查每周详细信息下的重命名字段:\n- 检查 In Flow 是否为 In Flow CV \n- 检查 Out Flow 是否为 Out Flow CV \n- 检查新字段 In Flow FC\n- 检查新领域 Out Flow FC"
我需要它:
转到原始预算屏幕
- 检查原始预算是否为原始预算 CV
- 检查剩余预算是否为剩余预算 CV
- 检查新字段汇率
- 检查新字段原始预算 FC
- 检查新字段剩余预算 FC
- 检查每周详细信息下的重命名字段:
- 检查 In Flow 是否为 In Flow CV
- 检查 Out Flow 是否为 Out Flow CV
- 在 Flow FC 中检查新字段
- 检查新字段 Out Flow FC
因此,如果简单示例没有收到消息,我想在该字符串中添加<li>
和<ul>
标记,以便我可以在 Web 应用程序上使用它
这是我的一个简单的代码:
private string regexmethod(string field)
{
string strRegex = @"^(.+?)\\n[\d|\w]-\W+";
Regex CatchBetweenTheFirstDot = new Regex(@"\\n[\d|\w]-\W+(.+?)\\n[\d|\w]-\W+");
Regex CatchTheNumbers = new Regex(@"\\n[\d|\w]-\W+");
Regex CatchFirstLineBeforDot = new Regex(strRegex);
Regex CatchInsideFirstRegex = new Regex(@"\\n-\W+");
var matchFirst = CatchFirstLineBeforDot.Matches(field);
var matchBetween = CatchBetweenTheFirstDot.Matches(field);
StringBuilder str = new StringBuilder();
if (matchFirst.Count > 0)
str.Append(matchFirst[0].Value);
foreach (Match matchItem in matchBetween)
{
str.Append("<ul><li>");
string newvalue = matchItem.Value;
var matchTheInside = CatchInsideFirstRegex.Matches(newvalue);
for (int i = 0; i < matchTheInside.Count; i++)
{
if (i == 0)
{
newvalue.Replace(matchTheInside[i].Value, @"<ul><li>");
}
else
{
newvalue.Replace(matchTheInside[i].Value, @"<\li><li>");
}
}
if (newvalue.Length > 0)
{
newvalue += "</li></ul>";
str.Append(newvalue);
}
}
这是我到目前为止得到的,但它对我不起作用。
任何帮助将不胜感激。