我正在尝试获取传入连接的IP地址,然后将其存储在YML文件(SnakeYML API)中。 我收到了IP down pat,并且我使用正确返回“127.0.0.1”的传入本地连接进行了测试。
但是,当我在其上运行此方法时:
address.replaceAll(".", "-");
回报是:“---------” (我必须替换句点,因为SnakYML使用句点作为路径分隔符)
这可能是非常愚蠢的事情,但我无法弄明白。
答案 0 :(得分:5)
您需要使用"\\."
代替"."
。原因是.
是一个匹配任何字符的正则表达式。因此,您需要将其转义为仅匹配实际点 - 写入address.replaceAll("\\.", "-");
。
另一种方法是使用replace
方法代替replaceAll
,它从字面上解释其参数,而不是正则表达式。所以address.replace(".", "-");
会做你想做的事。
答案 1 :(得分:1)
replaceAll
使用正则表达式,正则表达式.
表示任何字符(行分隔符除外),因此您需要转义.
,例如通过{{1} }或"\\."
(一个元素character class)。
但更清晰,可能更快的方法是使用"[.]"
之类的
replace(char, char)
它不使用正则表达式引擎。
你也可以使用address = address.replace('.', '-');
来自两个参数的所有正则表达式字符串(是的,replace(CharSequence target, CharSequence replacement)
也可以有一些特殊字符,可以被正则表达式引擎使用)。