System.out.println隐藏字符串

2023-12-02 07:12

本文主要是介绍System.out.println隐藏字符串,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

昨天开发的时候遇到一个坑,这个坑几乎浪费了我一整天时间,我甚至现在都不知道其原因。

开发环境

macOS Ventura 13.4
IntelliJ IDEA 2023.1.2

现象

我用java的各种httpclient获取网络上的一个文本文件,获取的文本文件的内容使用System.out.println打印出来仅显示最后一行。
遇到这个现象我原以为我写的代码有问题,我几乎试遍主流的http请求依赖结果几乎相同。

我所试用的依赖如下:

  <dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.8.16</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>org.jodd</groupId><artifactId>jodd-http</artifactId><version>6.3.0</version></dependency><!-- Pull in as a traditional dependency --><dependency><groupId>com.konghq</groupId><artifactId>unirest-java</artifactId><version>3.14.1</version></dependency><!-- https://mvnrepository.com/artifact/com.squareup.okhttp3/okhttp --><dependency><groupId>com.squareup.okhttp3</groupId><artifactId>okhttp</artifactId><version>4.12.0</version></dependency><!-- https://mvnrepository.com/artifact/org.jsoup/jsoup --><dependency><groupId>org.jsoup</groupId><artifactId>jsoup</artifactId><version>1.14.3</version></dependency>

苦思不得其解,为什么本应该有400多行的数据,我取到只剩最后一行,其他数据怎么会“隐藏”。

研究了一天没搞明白,总不能在一颗树上吊死,后来我就放弃,我使用Java调用 命令行工具curl间接的使用了功能。

然后这个事情就放一边不管了,随着项目的不断推进我无意中发现,其实数据一直都在只是有一部分数据没有被System.out.println打印出来。

复现

于是我简化了一下我的文件。文本内容如下:
在这里插入图片描述
然后我使用java代码读取这段文本,并输出结果:
在这里插入图片描述
通过调试也可以发现数据是完整的,就是打印出来缺失了。
在这里插入图片描述

结论

与是我自己创建一个文件,然后手动把文本复制粘贴过去。发现文件是可能正常打印的。
在这里插入图片描述
虽然在IDEA中两个文件打开是一样的,但是我在nvim中打开了两个文件出现不同点。

不能打印的文件:
在这里插入图片描述
可以打印的文件
在这里插入图片描述

看来可能是windows中的换行符导致的。

基于 DOS/Windows 的文本文件在每一行末尾有一个 CR(回车)和 LF(换行),而 UNIX 文本只有一个换行,即win每行结尾为\r\n,而linux只有一个\n如果win下的文档上传到linux,每行的结尾都会出现一个^M,(^M是ctrl+v,ctrl+m) 如果是单个文档的话,可以用vi打开,执行 :%s/^M//g 来去掉^M,

经测试我把这个^M删除掉,就可以正常打印了。

System.out.println不会打印 \r\r之前的信息

 result = "这是我要隐藏的一行文本"+"\r\r"+"Hello";//打印文本数据System.out.println(result);

这段代码的执行结果

Hello

如果只回车(\r),打印的东西会覆盖同行以前的内容;

然后我搜索了一下果然有这样的特性。只是我一直不知道。
https://www.cnblogs.com/coderxiaobai/p/13658238.html

相关文件下载

基本可以判断是这个文件里可能有什么手脚,我把这个文件和代码跟大家分享一下。
https://download.csdn.net/download/lxyoucan/88587951

总结

我写一些比较小的程序时,喜欢直接System.out.println打印日志来查看变量的值,长达10年之久了。没想到在这里还踩了坑了。

就这么一个小坑,足足浪费我几乎一整天的时间。

这篇关于System.out.println隐藏字符串的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/444427

相关文章

每日一题|牛客竞赛|四舍五入|字符串+贪心+模拟

每日一题|四舍五入 四舍五入 心有猛虎,细嗅蔷薇。你好朋友,这里是锅巴的C\C++学习笔记,常言道,不积跬步无以至千里,希望有朝一日我们积累的滴水可以击穿顽石。 四舍五入 题目: 牛牛发明了一种新的四舍五入应用于整数,对个位四舍五入,规则如下 12345->12350 12399->12400 输入描述: 输入一个整数n(0<=n<=109 ) 输出描述: 输出一个整数

Partical System

创建"粒子系统物体"(点击菜单GameObject -> Create Other -> Particle System) 添加"粒子系统组件"(点击Component -> Effects  ->Particle System) 粒子系统检视面板  点击粒子系统检视面板的右上角的"+"来增加新的模块。(Show All Modules:显示全部) 初始化模块: •

恶意PNG:隐藏在图片中的“恶魔”

&lt;img src=&quot;https://i-blog.csdnimg.cn/blog_migrate/bffb187dc3546c6c5c6b8aa18b34b962.jpeg&quot; title=&quot;214201hhuuhubsuyuukbfy_meitu_1_meitu_2.jpg&quot;/&gt;&lt;/strong&gt;&lt;/span&gt;&lt;

小技巧绕过Sina Visitor System(新浪访客系统)

0x00 前言 一直以来,爬虫与反爬虫技术都时刻进行着博弈,而新浪微博作为一个数据大户更是在反爬虫上不遗余力。常规手段如验证码、封IP等等相信很多人都见识过…… 当然确实有需要的话可以通过新浪开放平台提供的API进行数据采集,但是普通开发者的权限比较低,限制也比较多。所以如果只是做一些简单的功能还是爬虫比较方便~ 应该是今年的早些时候,新浪引入了一个Sina Visitor Syst

C和指针:字符串

字符串、字符和字节 字符串基础 字符串就是一串零个或多个字符,并且以一个位模式为全0的NUL字节结尾。 字符串长度就是字符串中字符数。 size_t strlen( char const *string ); string为指针常量(const修饰string),指向的string是常量不能修改。size_t是无符号数,定义在stddef.h。 #include <stddef.h>

PHP字符串全排列

方法一: $str = 'abc';$a =str_split($str);perm($a, 0, count($a)-1);function perm(&$ar, $k, $m) {if($k == $m){ echo join('',$ar), PHP_EOL;}else {for($i=$k; $i<=$m; $i++) {swap($ar[$k], $ar[$i]);perm($ar

PHP7扩展开发之字符串处理

前言 这次,我们来看看字符串在PHP扩展里面如何处理。 示例代码如下: <?phpfunction str_concat($prefix, $string) {$len = strlen($prefix);$substr = substr($string, 0, $len);if ($substr != $prefix) {return $prefix." ".$string;} else

十一、C语言:字符串函数

目录 一、strlen 二、strcpy 三、strcat  四、strcmp 五、strstr 六、strtok 七、strerror 一、strlen 注意:strlen()函数的返回值是size_t,两个size_t相减仍为无符号数 int main(){char arr[10] = "abc";char brr[10] = "abc123";if (strl

小程序button控件上下边框的显示和隐藏

问题 想使用button自带的loading图标功能,但又不需要button显示边框线 button控件有一条淡灰色的边框,在控件上了样式 border:none; 无法让button边框隐藏 代码如下: <button class="btn">.btn{border:none; /*一般使用这个就是可以去掉边框了*/} 解决方案 发现button控件有一个伪元素(::after

System.getProperties().

Java.version Java 运行时环境版本 java.vendor Java 运行时环境供应商 java.vendor.url Java 供应商的 URL java.home Java 安装目录 java.vm.specification.version Java 虚拟机规范版本 java.vm.specification.vendor