【发布时间】:2014-01-11 00:55:34
【问题描述】:
我需要通过应用特定的替换方法Modify() 来替换文本中的所有单词。我在 C# 中有以下代码 sn-p:
Regex regex = new Regex("[A-Za-z][a-z]*");
regex.Replace(text, x => Modify(x.Value));
Modify() 函数是用于修改每个匹配项的一些函数,例如它可以用下一个字母字符替换单词中的所有字符。例如,如果这是输入文本:
神奇的香蕉正在吃苹果。
这可能是输出:
Nbhjd cbobob jt fbujoh uif bqqmf.
Modify() 函数的用途在这里无关紧要。我想知道MatchEvaluator 的Java 实现。 C# 中的代码相当简单,但是在 Java 中如何实现呢?
【问题讨论】:
-
x在这里指的是什么? -
是单词的匹配。 lambda 表达式实际上是一个匹配评估器 (msdn.microsoft.com/en-us/library/…)。
-
你可以使用类似
public static String modify(String text){return text.replaceAll("[A-Za-z][a-z]*", "");} -
@Igor Sevo -
1)的假设不正确。在全局替换中,[A-Za-z][a-z]*将匹配 all 大写字母,无论它们在哪里,开始/中间/结束!小写也一样。例如,它匹配ABCDE,连续 5 次匹配各 1 个大写。 -
@Igor Sevo - 它仍然不正确,实际上是相同的。实际上,它只是
[A-Za-z],并且在全局替换中,将匹配每个大写/小写字母。唯一的方法是使用单词边界:\b[A-Za-z][a-z]*
标签: c# java regex replace matchevaluator