|
|
1
126
From MSDN
在.NET正则表达式中,组0始终是整个匹配项。为了一个字面上的美元,你需要
|
|
|
2
291
好像
|
|
|
3
35
一组令人困惑的答案,部分原因是问题的标题实际上是 许多的 大于所问的特定问题。看完后,我不确定是否有任何答案是几处编辑远离吸收所有的好东西,所以我想我会尝试总结。 这里有一个扩展方法,我认为它可以避免这里提到的陷阱,并提供最广泛适用的解决方案。
所以…
不幸的是,
@HA 's comment that you have to
注:
但是,你必须逃跑
错误如下:
告诉你吧,我知道那些喜欢使用regex的人觉得他们的使用可以避免错误,但是我仍然倾向于字节嗅探字符串(但只有在读了
Spolsky on encodings
)确保你得到了你想要的重要用例。让我想起克罗克福德
insecure regular expressions
“有一点。我们经常编写regexp,允许我们想要的(如果幸运的话),但无意中允许更多的(例如
怪怪的
|
|
|
4
30
这里有一个扩展方法。不知道我在哪里找到的。
|
|
|
5
30
似乎最简单的方法就是使用.NET附带的替换方法,该方法自.NET 1.0以来一直存在:
要使用此方法,必须添加对Microsoft.VisualBasic组件的引用。此程序集是.NET运行时的标准部分,不是额外下载或标记为已过时。 |
|
|
6
10
|
|
|
7
8
受cfeduke答案的启发,我创建了这个函数,它使用indexof在字符串中查找旧值,然后用新值替换它。我在一个处理数百万行的ssis脚本中使用了这个方法,regex方法比这个慢得多。
|
|
|
8
6
扩展在
C. Dragon 76
通过将他的代码扩展为一个重载默认值的扩展,得到了流行的答案。
|
|
|
9
3
基于Jeff Reddy的回答,进行了一些优化和验证:
|
|
|
10
2
类似于C.Dragon的版本,但如果您只需要一个替换:
|
|
|
11
1
这是执行regex替换的另一个选项,因为似乎没有多少人注意到匹配项包含字符串中的位置:
|
|
|
12
0
|
|
|
13
0
正则表达式方法应该有效。但是,您还可以做的是小写数据库中的字符串、小写的变量百分比,然后从数据库中找到小写字符串中的位置和长度。记住,字符串中的位置不会因为其小写而改变。 然后,使用一个反向循环(如果不这样做,则更容易,您将必须保留后续点移动到的位置的运行计数)从数据库中的非小写字符串中删除%variables%(按位置和长度),并插入替换值。 |
|
|
14
0
(因为每个人都在为此努力)。以下是我的版本(带有空检查和正确的输入和替换转义)**灵感来自互联网和其他版本:
用途:
|
|
|
15
0
我来做我的案子,如果你愿意,你可以把我撕成碎片。 Regex并不是这个问题的答案——速度太慢,内存不足,相对来说。 StringBuilder比字符串管理要好得多。
因为这将是补充
我认为使用StringComparison参数不是一个好主意。 我确实试过了,但是刘先生最初提到的测试用例显示出一个问题:
虽然indexof将匹配,但源字符串(1)中匹配的长度与oldvalue.length(2)之间不匹配。当oldValue.length被添加到当前匹配位置时,这通过在其他一些解决方案中导致indexoutofrange而表现出来,我找不到解决这一问题的方法。
无论如何,regex都无法匹配这个案例,所以我采用了只使用
我的代码与其他答案类似,但我的问题是,在遇到创建一个
我对其他答案做了一些广泛的测试,结果显示速度略快,使用的内存略少。
|