我想在C#dot net中进行正则表达式替换,我想知道有多少替换。什么是最好的方式?
我现在能做的最好的事情就是看看之前/之后是否有任何改变
var a = "gooodbaaad";
var b = Regex.Replace(a,"[oa]","x");
if (a != b) Debug.Write("changed");
但这似乎是间接的,在所有情况下都不准确。
答案 0 :(得分:5)
尝试以下内容。它将1个或多个单词字符的所有序列转换为文本文本{word}
并计算替换次数。那么,源文本
The quick brown fox jumped over the lazy dog.
将转换为
{word} {word} {word} {word} {word} {word} {word} {word} {word}.
在操作结束时,变量cnt
的值为9
。
Regex pattern = new Regex( @"\w+" ) ;
string source = GetMeMySourceData() ;
int cnt = 0 ;
string transformed = pattern.Replace( source , m => {
++cnt ;
return "{word}" ;
});
关闭的力量。
答案 1 :(得分:3)
尝试使用Regex.Replace with MatchEvaluator
的另一个重载#!/usr/bin/env ruby
h, m, s = 12, 07, 10
$_.gsub!(/(\d\d):(\d\d)/) do
'%02d:%02d' % (($1.to_i + h) * 60 + $2.to_i + m).divmod(60) + ":#{s}"
end