悠悠楠杉
网站页面
正文:
在Java开发中,字符串处理是高频操作,尤其是需要按特定规则分割文本时。正则表达式提供了强大的灵活性,但若处理不当,空白符(空格、制表符等)可能干扰结果。本文将通过实际案例,展示如何精确控制分割逻辑。
使用String.split()时,默认会忽略连续空白符,但若需保留部分空白,需明确规则。例如:
String text = "Java, Python, Go";
String[] languages = text.split(",\\s*"); // 按逗号和后续任意空格分割
System.out.println(Arrays.toString(languages));
// 输出: [Java, Python, Go]通过Pattern和Matcher类,可自定义分割逻辑。以下示例保留单空格但移除多余空白:
Pattern pattern = Pattern.compile(",\\s?(?=\\S)");
String[] result = pattern.split("Java, Python, Go");
// 输出: [Java, Python, Go](仅保留逗号后的一个空格)若需按多字符分隔(如“||”),同时忽略前后空白,可使用正向预查:
String data = "A || B || C";
String[] parts = data.split("\\s*\\|\\|\\s*");
// 输出: [A, B, C]某些场景需保留换行符(如解析日志),可通过分组捕获实现:
String logs = "Error:404\nWarn:Timeout\n";
Pattern logPattern = Pattern.compile("(.*?)(\\n|$)");
Matcher matcher = logPattern.matcher(logs);
while (matcher.find()) {
System.out.println("Log: " + matcher.group(1));
}