处理回车换行时出现的问题

简介: 处理回车换行时出现的问题

参考:http://www.ruanyifeng.com/blog/2006/04/post_213.html

回车换行

Unix系统里,每行结尾只有"<换行>",即"\n";Windows系统里面,每行结尾是"<回车><换行>",即"\r\n";Mac系统里,每行结尾是"<回车>"。一个直接后果是,Unix/Mac系统下的文件在Windows里打开的话,所有文字会变成一行;而Windows里的文件在Unix/Mac下打开的话,在每行的结尾可能会多出一个^M符号。

在进行键盘输入字符串的时候,不知道Windows每行的结尾是<回车><换行>的话,就会出现无法理解的问题:

 
      Scanner sc = new Scanner(System.in);
      sc.useDelimiter("\n");
      while(sc.hasNext()) {
        String s = sc.next();
        if(("exit\r").equals(s)){ //注意这里的\r
          System.out.println("退出");
          System.exit(1); 
        ps.println("键盘输入:"+s);
      

一个简单的程序,使用Scanner读取键盘输入,使用\n做分隔符,每次读取一行,当输入exit时退出。


但如果直接用"exit".equals(s) 比较的话,就会发现每次你输入exit然后按下回车后,s的值永远是多一个\r,而且在控制台输出时可能很难发现这个\r,debug时可以看到s中的\r。

相关文章
|
缓存 Rust 前端开发
比Webpack快700倍的Turbopack,到底快在哪?
比Webpack快700倍的Turbopack,到底快在哪?
456 0
|
开发工具 Android开发 git
解决Android AAPT: error: resource android:attr/lStar not found. 问题
解决Android AAPT: error: resource android:attr/lStar not found. 问题
1169 0
|
9月前
|
人工智能 安全 Java
通义灵码 2.0 与 1.0 比较测评反馈
通义灵码 2.0 与 1.0 比较测评反馈
444 10
|
存储 API
vue3中如何动态自定义创建组件并挂载
vue3中如何动态自定义创建组件并挂载
1054 90
|
IDE 架构师 测试技术
通义灵码体验反馈
作为一名系统架构师,我试用了通义灵码个人版,发现其显著提升了开发效率,整体提效达30%。具体流程包括在VSCode中安装插件、登录阿里云账号、使用灵码进行代码解释、注释、优化及单元测试等。灵码在代码生成速度、质量及解释方面表现出色,但在账号登录和默认注释语言方面仍有优化空间。
430 3
|
Java 开发工具 Android开发
搭建大型源码阅读环境——使用 OpenGrok
RTFSC 是程序员成长的必修课,营造舒适的环境至关重要。本文介绍了阅读大型源码(如 AOSP)的工具选择,重点推荐了免费开源的 OpenGrok。OpenGrok 提供快速搜索、版本历史查看、语法高亮等功能,适用于特大型项目。文章还详细讲解了 OpenGrok 的安装和配置步骤,帮助读者高效阅读源码。
2386 6
|
存储 安全 数据安全/隐私保护
Maccy: 轻量级剪贴板管理器
【10月更文挑战第10天】
1035 4
|
JavaScript 前端开发 开发者
ThreeJs控制模型骨骼实现数字人
这篇文章讲解了如何使用Three.js通过控制模型的骨骼来实现数字人的动态表现,包括加载模型、获取骨骼信息以及通过编程控制骨骼动作的具体方法。
1329 1
|
存储 物联网 数据库
Android 11 以上 SettingsProvider DatabaseHelper 解析
Android 11 以上 SettingsProvider DatabaseHelper 解析
1266 0
|
存储
char *str,char &str,char *& str和char str的区别
char *str,char &str,char *& str和char str的区别
478 0