You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

修改Java Scanner行分隔符,忽略
以完整读取字符串

解决Scanner读取时忽略\u2028字符的问题

要让Scanner忽略\u2028字符并读取完整字符串,你可以通过自定义分隔符模式实现,具体操作如下:

  1. 自定义行分隔符:移除默认模式里的\u2028,只保留\r\n、\n、\r、\u2029、\u0085作为行结束标识。
  2. 用Scanner.useDelimiter()方法将自定义模式设为分隔规则。
  3. 调用scanner.next()读取内容(注意不要用nextLine(),它仍会遵循原始行分隔符逻辑)。

代码示例

import java.util.Scanner;
import java.util.regex.Pattern;

public class ScannerIgnoreU2028 {
    public static void main(String[] args) {
        // 自定义分隔符:移除\u2028的默认行分隔符模式
        Pattern customLineDelimiter = Pattern.compile("\r\n|[\n\r\u2029\u0085]");
        
        Scanner scanner = new Scanner(System.in);
        scanner.useDelimiter(customLineDelimiter);
        
        // 读取到自定义分隔符前的所有内容(包含\u2028)
        String fullContent = scanner.next();
        System.out.println("完整读取的内容:" + fullContent);
        
        scanner.close();
    }
}

说明

  • 默认Scanner行分隔符包含\u2028,所以nextLine()遇到该字符就会停止读取。修改分隔符后,\u2028会被当作普通字符处理,不会触发行结束逻辑。
  • 若输入来自文件或其他流,只需把System.in替换为对应的输入流对象即可,逻辑保持一致。

内容的提问来源于stack exchange,提问作者Smetana Po Aktsii

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 13:08:13