正则表达式的Java API 声明\s将匹配空格.所以正则表达式\\s\\s应匹配两个空格.
Pattern whitespace = Pattern.compile("\\s\\s");
matcher = whitespace.matcher(modLine);
while (matcher.find()) matcher.replaceAll(" ");
Run Code Online (Sandbox Code Playgroud)
这样做的目的是用一个空格替换两个连续空格的所有实例.然而,这实际上并不起作用.
我对正则表达式或"空白"这个词有严重的误解吗?
有没有办法把a char变成一个String或String一个字母变成一个字母char(比如你怎么把a int变成a double和a double变成a int)?(如果可以,请链接到相关文档).
我如何找到这样的东西,我只是在文档中隐约知道?
乍一看,这似乎是不费脑子的.它可能是,但有一些事情让我觉得我可能会遗漏一些东西.首先,Character.isWhitespace的Java文档似乎将其排除在外.对于什么是什么以及什么是不允许作为空白的定义似乎是非常明确的('当且仅当')并且第一行不是不间断的空间.
我一直认为一个普通的"空间" - 当你按空格键时你得到的东西 - 作为一个不间断的空间.
那么它在哪里适合列表呢?该列表在这个问题的最高评价答案中被认为是确定的- 我只是读错了吗?此外,这个问题的第一个评论者似乎有他的疑虑(在不同的背景下).然而,当我构造一个简单的代码来测试时,它表明正常空间是一个空白的实例,正如人们所期望的那样.
import static java.lang.Character.isWhitespace;
public class WhitespaceCheck {
public static void main(String[] args) {
Character test = ' ';
if (Character.isWhitespace(test)) {
System.out.println("Is whitespace!" );
} else {
System.out.println("Is not whitespace!" );
}
}
}
Run Code Online (Sandbox Code Playgroud)
所以,我是否错误地阅读了列表中的第一个项目,它是否在列表中的其他位置,或者列表本身是错误的?