【发布时间】:2012-02-20 16:54:15
【问题描述】:
我正在尝试定义一个用户可以使用 Java 中的 Regex 输入系统的字符串。字符串不应包含尾随、前导或双空格,但可以在整个字符串名称中包含大量空格。它应该只包含一组定义的其他字符,允许的字符集是([0-9a-zA-Z_\\+=\\(\\)<>]+)。
有没有办法在字符串中定义没有尾随、前导或双空格,而不使用 '\S',因为这将允许任何字符?
我尝试使用
替换双空格String file1 = file.replaceAll("\\s{2,}", " "); 有效,但随后 file1.trim() 或
file1 = file1.replaceAll("^\\s+", "");
file1 = file1.replaceAll("\\s+$", "");
不替换尾随和前导空格。
【问题讨论】:
-
使用
Pattern和Matcher。见this tutorial。 -
String.trim() 将从开头和结尾删除所有空白类型字符。如果不是其他问题,或者那些只是显示为空白的其他类型的特殊字符..
-
System.out.println("\"" + (" ab c ".replaceAll("\\s{2,}", " ").replaceAll("^\\s+", "").replaceAll("\\s+$", "")) + "\"");->"ab c";我觉得不错?