【发布时间】:2015-02-15 01:01:29
【问题描述】:
我正在从事一个有趣的项目,该项目需要以一种不寻常的方式替换字符串。具体来说,结果的大小写必须尽量匹配原始的大小写,并且搜索本身不区分大小写。
例子:
原文:“测试 Foobar 测试” 搜索:“foobar” 替换为:“helloworld” 结果:“测试 Helloworld 测试”
原文:“测试 FOOBAR 测试” 搜索:“foobar” 替换为:“helloworld” 结果:“测试 HELLOWORLD 测试”
现在,我意识到在很多情况下这很难确定(混合大小写匹配与不同的长度替换。)但是如果我将其限制为三种情况:全部大写、全部小写和首字母大写?
到目前为止,我的计划是进行三个搜索:首先对全大写条件进行区分大小写的搜索,然后对首字母条件进行区分大小写的搜索,最后进行不区分大小写的搜索并替换为全部小写。但如果可能的话,我想要更快、更优雅的东西。有什么想法吗?
【问题讨论】:
-
测试 FooBar 怎么样,应该产生 HelloWorld 吗?您是否尝试过任何字符串操作函数?
-
@lrb 在一个完美的世界中,FooBar 会产生 HelloWorld,但我想不出一种方法来实现它。所以这就是为什么我将它限制在三个特定的情况下。所以 FooBar 会产生 Helloworld。
-
@EZI 我解释了我目前的解决方案,非常简单,不需要代码来理解。
标签: c# regex string replace case-sensitive