我刚在代码库中的“Utils”类中找到了这个方法。它是很久以前由不再为我们工作的开发人员编写的。它在做什么?什么回来了?!?当然,没有JavaDocs或评论。
public static String stripChars(String toChar, String ptn){
String stripped = "";
stripped = toChar.replaceAll(ptn, "$1");
return stripped.trim();
}
提前致谢!
答案 0 :(得分:3)
基本上这是一个非常短的别名。这样:
stripChars(a, b)
相当于:
a.replaceAll(b, "$1").trim()
答案 1 :(得分:2)
它似乎取代了“toChar”中的所有内容,它将正则表达式“ptn”与第一组匹配,以匹配“toChar”
正则表达式具有组的概念,例如匹配“2012年”并将其替换为“年1012”,或“年2006”与“年1007”(将前20个更改为10)可以通过替换来完成
“第20年([0-9] [9-9])”和“年20 $ 1” - 也就是说,匹配整个字符串,然后将其替换为“20年”,然后替换第一组({ {1}})。该组是括号中的第一个东西。
无论如何,您的方法会将“toChar”中与“ptn”匹配的所有内容替换为正则表达式“ptn”中的第一个组。所以给定 stripChars(“2012年”,“第20年([0-9] [9-9]”);您只会收到“12”,因为整个文本将匹配并仅被第一组替换。
然后它会跳过任何前导或尾随空格。
答案 2 :(得分:1)
只有replacing
一个字符串,其中包含自己的subset
匹配字符,然后从两端修剪空格。
Fo示例
因此,如果您希望将一个单词替换为该单词的一系列数字
使用正则表达式\b.*?(\d*).*?\b
然后繁荣,您的replaceAll
方法将提供这些结果
hey123wow->123
what666->666
how888->888
$0
指的是整个匹配的字符串,例如此示例中的hey123wow
,what666
,how888
$1
指的是此示例中的group.i.e。(\d*)
,即。123
,666
,888
$2
将引用此示例中不存在的第二组。
答案 3 :(得分:1)
作为参数方法传递的模式字符串似乎包含一个匹配的组,并且要替换all的调用将使用与第一个组匹配的部分替换整个匹配到paatern。您应该查找此方法的调用层次结构,以查找传递给方法的一些正则表达式以及正在处理的字符串,
答案 4 :(得分:0)
toChar.replaceAll(ptn, "$1");
它将ptn
toChar
中所有出现的$1
替换为已捕获的组brackets ()
,我们不知道它在哪里。
捕获组是"(\\d+)(cd)"
内的模式: -
对于以下正则表达式中的E.G: -
$0
$1
表示完整匹配\\d+
表示第一个捕获组($2
) cd
表示第二个捕获组(String str1 = "xyz12cd";
// This will replace `12cd` with the first capture group `12`
str1 = str1.replaceAll("(\\d+)(cd)", "$1");
System.out.println(str1);
)
Regular Expression
要了解有关{{1}}的更多信息,请参阅以下链接: -