我有一个包含任意数量点的字符串,有时也是一系列点。
我想用.
(下划线)替换每个_
(点),但是当有一系列点时,这也应该只产生一个下划线。
有什么想法吗?
我正在使用java。
答案 0 :(得分:10)
您可以将replaceall
方法用作:
str = str.replaceAll("\\.+","_");
正则表达式\\.+
.
是一个正则表达式元字符,可以匹配任何内容(换行符除外)。由于我们希望匹配文字.
,我们将其与\
一起转义。由于Java字符串和正则表达式引擎都使用\
作为转义字符,因此我们需要使用\\
,+
是一个或多个的量词。
或者我们可以使用:
str = str.replaceAll("[.]+","_");
由于字符类中的.
字面意义上处理,因此无需转义它。