我有一个正则表达式,它GroupCollection
在它的捕获中使用 s 来捕获一组项目 ID(可以用逗号分隔,也说明最后一个有“和”这个词):
(\bItem #(?<ITEMID>\d+))|(,\s?(?<ITEMID>\d+))|(,?\sand\s(?<ITEMID>\d+))
有没有一种简单的方法使用 C# 的Regex
类来用 url 替换 ITEMID 数字?现在,我有以下内容:
foreach (Match match in matches)
{
var group = match.Groups["ITEMID"];
var address = String.Format(UnformattedAddress, group.Value);
CustomReplace(ref myString, group.Value, address,
group.Index, (group.Index + group.Length));
}
public static int CustomReplace(ref string source, string org, string replace,
int start, int max)
{
if (start < 0) throw new System.ArgumentOutOfRangeException("start");
if (max <= 0) return 0;
start = source.IndexOf(org, start);
if (start < 0) return 0;
var sb = new StringBuilder(source, 0, start, source.Length);
var found = 0;
while (max-- > 0)
{
var index = source.IndexOf(org, start);
if (index < 0) break;
sb.Append(source, start, index - start).Append(replace);
start = index + org.Length;
found++;
}
sb.Append(source, start, source.Length - start);
source = sb.ToString();
return found;
}
我在网上找到的CustomReplace
方法是在字符串源中用另一个字符串替换一个字符串的简单方法。问题是我确信可能有一种更简单的方法,可能会根据需要使用Regex
类来替换GroupCollection
s 。我只是想不通那是什么。谢谢!
示例文本:
Hello the items you are looking for are Item #25, 38, and 45. They total 100 dollars.
25
, 38
, 并且45
应该替换为我正在创建的 URL 字符串(这是一个 HTML 字符串)。