检查 String 是否只有换行符
Check if String is only line breaks
我正在尝试检查给定的字符串是否只包含换行符而没有字符。我用这个方法
boolean breaksNoLetters(String msg) {
if (!msg.matches(".*[a-zA-Z]+.*") && msg.contains("\n")) {
return true;
} else {
return false;
}
}
它只有在包含换行符时才会 return false。
为什么不针对此正则表达式对其进行测试?
if (msg.matches("[\n\r]+")) { }
此正则表达式将匹配包含 \n
和 \r
.
集合中的一个或多个字符的所有字符串
一种方法是用空白字符串替换 \n
并检查是否还有任何内容:
boolean breaksNoLetters(String msg) {
return !msg.replace("\n", "").isEmpty();
}
编辑:
使用 Java 8 的流,很容易检查所有字符实际上是 \n
s:
boolean justLineBreaks = msg.chars().allMatch(c -> c == '\n');
I am trying to check if a given String contains only line breaks and no characters.
String Path1 = "\n\r";
String Path2 = "foo\nbar";
System.out.println(Path1.matches("[\n\r]+"));
System.out.println(Path2.matches("[\n\r]+"));
"[\n\r]+"
匹配一个或多个换行符或回车 return 字符。如有必要,还可在字符 class 内使用 \f
(换页)。
输出:
true
false
如果您必须检查 String
是否只包含 一个 换行符 而没有其他字符,请使用 equals()
方法:
public boolean isLineBreak(String line) {
return line.equals(System.getProperty("line.separator"));
}
我给你的另一个建议是使用 System.getProperty("line.separator")
方法来获取行分隔符,因为它 平台无关 。例如,UNIX 使用 \n
和 Windows \r\n
。使用此方法,您不必关心这些。
Java 7 具有 System.lineSeparator()
方法,它允许您执行与 System.getProperty("line.separator")
.
相同的操作
否则,如果您必须检查 String
是否包含 一个或多个 换行符 ,只需使用以下代码:
public boolean isLineBreak(String line) {
return line.matches("[\n\r]+");
}
不可能,你写的
only line breaks and no characters
和换行符是特殊字符。退一步想想你想解决什么问题。是否只是检查是否至少给出了一个可打印字符?然后 trim() String 并检查 length() > 0。否则上面的 RegEx 是一个好的。
我正在尝试检查给定的字符串是否只包含换行符而没有字符。我用这个方法
boolean breaksNoLetters(String msg) {
if (!msg.matches(".*[a-zA-Z]+.*") && msg.contains("\n")) {
return true;
} else {
return false;
}
}
它只有在包含换行符时才会 return false。
为什么不针对此正则表达式对其进行测试?
if (msg.matches("[\n\r]+")) { }
此正则表达式将匹配包含 \n
和 \r
.
一种方法是用空白字符串替换 \n
并检查是否还有任何内容:
boolean breaksNoLetters(String msg) {
return !msg.replace("\n", "").isEmpty();
}
编辑:
使用 Java 8 的流,很容易检查所有字符实际上是 \n
s:
boolean justLineBreaks = msg.chars().allMatch(c -> c == '\n');
I am trying to check if a given String contains only line breaks and no characters.
String Path1 = "\n\r";
String Path2 = "foo\nbar";
System.out.println(Path1.matches("[\n\r]+"));
System.out.println(Path2.matches("[\n\r]+"));
"[\n\r]+"
匹配一个或多个换行符或回车 return 字符。如有必要,还可在字符 class 内使用 \f
(换页)。
输出:
true
false
如果您必须检查 String
是否只包含 一个 换行符 而没有其他字符,请使用 equals()
方法:
public boolean isLineBreak(String line) {
return line.equals(System.getProperty("line.separator"));
}
我给你的另一个建议是使用 System.getProperty("line.separator")
方法来获取行分隔符,因为它 平台无关 。例如,UNIX 使用 \n
和 Windows \r\n
。使用此方法,您不必关心这些。
Java 7 具有 System.lineSeparator()
方法,它允许您执行与 System.getProperty("line.separator")
.
否则,如果您必须检查 String
是否包含 一个或多个 换行符 ,只需使用以下代码:
public boolean isLineBreak(String line) {
return line.matches("[\n\r]+");
}
不可能,你写的
only line breaks and no characters
和换行符是特殊字符。退一步想想你想解决什么问题。是否只是检查是否至少给出了一个可打印字符?然后 trim() String 并检查 length() > 0。否则上面的 RegEx 是一个好的。