说我有一个文件,其中包含一些文本。其中包含子字符串,例如“ substr1”,“ substr2”,“
substr3”等。我需要将所有这些子字符串替换为其他文本,例如“ repl1”,“ repl2”,“
repl3”。在Python中,我将创建一个这样的字典:
{
"substr1": "repl1",
"substr2": "repl2",
"substr3": "repl3"
}
并创建用’|’组合键的模式,然后替换为re.sub
function。在Java中有类似的简单方法吗?
这是您的Python建议如何转换为Java的方式:
Map<String, String> replacements = new HashMap<String, String>() {{
put("substr1", "repl1");
put("substr2", "repl2");
put("substr3", "repl3");
}};
String input = "lorem substr1 ipsum substr2 dolor substr3 amet";
// create the pattern joining the keys with '|'
String regexp = "substr1|substr2|substr3";
StringBuffer sb = new StringBuffer();
Pattern p = Pattern.compile(regexp);
Matcher m = p.matcher(input);
while (m.find())
m.appendReplacement(sb, replacements.get(m.group()));
m.appendTail(sb);
System.out.println(sb.toString()); // lorem repl1 ipsum repl2 dolor repl3 amet
这种方法可以 同时 (即“一次”)进行替换。即,如果您碰巧有
"a" -> "b"
"b" -> "c"
那么这种方法会给出"a b" -> "b c"
与答案相反的答案,提示您应该将多个呼叫链接到replace
或replaceAll
会给出答案"c c"
。
(如果您一般化此方法以编程方式创建正则表达式,请确保您Pattern.quote
每个单独的搜索词和Matcher.quoteReplacement
每个替换词。)
问题内容: 在JavaScript中有一个简单的等效项吗? 这是使用PHP的,它允许您使用单词数组来查找和替换。我可以使用JavaScript / jQuery做类似的事情吗? 问题答案: 您可以使用自己的函数来扩展String对象,该函数可以满足您的需要(如果缺少功能,则很有用): 对于全局替换,您可以使用正则表达式: 要使用该功能,它将类似于您的PHP示例:
问题内容: 我想使用函数替换多个字符串。 我目前有 但想有类似的东西 虽然那听起来不像是好的语法 正确的方法是什么?有点像如何在中进行操作\1以及\2如何将字段替换为某些搜索字符串 问题答案: 这是一个简短的示例,应该使用正则表达式来解决问题: 例如: ’() and –text–‘
问题内容: 一个非常简单的小问题,但是我不太明白该怎么做。 我需要将’_’的每个实例替换为空格,并将’#’的每个实例替换为空/空。 我已经试过了: 我真的不喜欢这样的链接命令。还有另一种方法可以做到这一点吗? 问题答案: 使用OR运算符(): 您还可以使用字符类: Fiddle 如果您想用一件事替换哈希值,而用另一件事替换下划线,则只需要链接即可。但是,您可以添加一个原型: 但是为什么不连锁呢?我
我真的不喜欢这样链接命令。有没有另一种方法在一个做?
我需要以最有效的方式替换一个字符串中许多不同的子字符串。除了使用string.replace替换每个字段的蛮力方法之外,还有其他方法吗?
我有一个字符串原型,其代码如下所示: 用法: