java 读取 文本块_Java文本块
java 读取 文本块
文本块是JDK增强建议( JEP 355 ),可以在JDK 13和14中用作预览语言功能。它计划在JDK 15中成为永久性功能。文本块是跨越多行并且不需要的String文字。对于大多数转义序列。
动机
在标准Java字符串中嵌入XML,JSON或SQL等格式会变得很烦人。 例如,由于需要转义,因此只有两个键的简单JSON代码片段在Java中几乎无法读取:
String json = "{\n" + "\"name\": \"john\",\n" + "\"age\": 42\n" + "}" ;
文本块进行救援
使用新的文本块功能,我们可以将代码重写为:
String text = "" " { "name" : "john" , "age" : "42" } "" ";
使用三引号(“””)打开(和关闭)文本块。 文本从下一行开始。 打开文本块后,该行的其余部分需要保持空白。
如果我们将此字符串打印到控制台,我们将看到:
{ "name" : "john" , "age" : "42" }
您可能已经注意到,左侧的凹痕已被去除。 这是因为文本块的处理分为三个步骤:
- 行终止符被标准化为LF字符。 这样可以避免不同平台(例如Windows和Unix)之间的问题。
- 附带的前导空格和所有尾随空格均被删除。 偶然的前导空格是通过找到所有行的前导空格的公共数量来确定的。
- 转义序列被解释。 文本块可以包含与标准字符串相同的转义序列(例如\ t或\ n)。 注意,已经添加了两个新的转义序列:\ s用于显式空间,\\ <eol>作为继续指示符(稍后在\ <eol>上有更多介绍)。
如果我们明确需要前导空格,则可以使用indent()方法:
String text = "" " { "name" : "john" , "age" : "42" } "" ".indent( 4 );
这会在我们的JSON代码段中添加4个额外的前导空格。 所以看起来像这样:
{ "name" : "john" , "age" : "42" }
或者,我们可以从封闭的三引号中删除4个前导空格以产生相同的结果:
String text = "" " { "name" : "john" , "age" : "42" } "" "; // <-- moving this 4 spaces to the left produces 4 additional leading spaces
新的\ <eol>转义序列
使用新的\ <eol>转义序列,我们可以将单行的内容拆分为多行,而无需创建实际的行终止符。
String text = "" " 1 2 \ 3 \ 4 5 "" ";
结果是:
1 2 3 4 5
转义三引号
如果我们需要在文本块中写入三引号,则只需要转义第一引号即可:
String text = "" " Java text blocks start with \ "" " Java text blocks start with \ "" ";
这将产生:
Java text blocks start with "" " Java text blocks start with
摘要
文本块是Java编程语言的不错的补充。 通过支持多行,它们消除了对双引号转义的需要,从而可以大大提高诸如JSON,XML或SQL之类的嵌入式字符串的可读性。
建议进一步阅读:Brian Goetz的“ 文本块” 。
与往常一样,您可以在GitHub上找到所有提供的示例。
翻译自: https://www.javacodegeeks.com/2020/06/java-text-blocks-2.html
java 读取 文本块
java 读取 文本块_Java文本块相关推荐
- java 读取txt乱码_java 逐行读取txt文本如何解决中文乱码
java读取txt文本中如含有中文,可能会出现乱码,解决方案是: 1.要统一编码,java工程的编码,txt文本编码,java工程中的java文本编码都统一为utf-8: 2.利用 InputStre ...
- java的同步块_Java 同步块
Java同步块用来标记一个方法或一个代码块为同步的.Java同步块可以用来避免竞态. Java同步关键字 在 Java 中使用 synchronized 来标记同步块.一个同步块是同步在某些对象上.同 ...
- java 读取css文件_java文件读取的两种方式
JAVA中读取文件(二进制,字符)内容的几种方 JAVA中读取文件内容的方法有很多,比如按字节读取文件内容,按字符读取文件内容,按行读取文件内容,随机读取文件内容等方法,本文就以上方法的具体实现给出代 ...
- java 读取文件 效率_Java 逐行读取文本文件的几种方式以及效率对比
前言 上周负责的模块中需要逐行读取文件内容, 写完之后对程序执行效率不太满意, 索性上网查了一下 Java 逐行读取文件内容的各种方法, 并且简单地比对了一下执行效率. 在此记录, 希望能够帮到有需要 ...
- java读取本地文件_java 读取本地文件实例详解
java 读取本地文件实例详解 用javax.xml.w3c解析 实例代码: package cn.com.xinli.monitor.utils; import org.w3c.dom.Docume ...
- java 读取配置文件工具_java读取配置文件信息properties的工具类
java读取配置文件信息properties的工具类,介绍一个工具PropertyReader.java,读取项目配置文件信息 package mymail; import java.io.File; ...
- java 读取本地文件_java 读取本地文件实例详解
java 读取本地文件实例详解 用javax.xml.w3c解析 实例代码: package cn.com.xinli.monitor.utils; import org.w3c.dom.Docume ...
- java 读取excel模板_java如何读取excel表格的信息,java读取excel模板
java如何读取excel表格的信息Java如何读取excel表格的信息,用java读取excel表格信息的方法:1.pass [workbook.getworkbook(新文件(' e ://exc ...
- java读取tif图片_java读取tiff格式图片信息的方式。
java读取tiff图片信息,其实也挺简单的,用xmpcore.jar可以解析. File jpegFile = new File("D:\\1.tif"); Metadata m ...
最新文章
- C++ Char int string关系
- OpenCV梯度直方图HOG的实例(附完整代码)
- 最新处理器排名_安兔兔Android处理器天梯榜发布:最强的还是它
- oracle arp绑定mac地址,使用ARP命令来绑定IP和MAC地址
- python获取网站图片_python获取网站图片
- pytest测试框架(六)---使用skip和skipif跳过测试用例
- ARCGIS 拓扑规则阐述
- 【递归】n个数的全排列
- BERT+CRF互联网金融新实体发现
- php点广告送积分,PHP猜一猜奇偶商城积分促销模式
- glide加载gif图不显示动画_Android使用glide加载gif动画设置播放次数
- 【Day5.1】在坑人的免税店King Power蹭午餐
- 分析网易云用户运营的指标监控和召回机制
- Latex排版,表格标题总是出现在下方的解决方案
- 软件配置管理(SCM)
- 什么是LSB,MSB
- 安卓平板装MySQL_准备购入一部平板作为学习用具,有推荐的吗?
- 武汉大学计算机学院深造率,2017届本科毕业生深造率排名与分析
- 100种思维模型之人类误判心理思维模型-49
- 项目管理的五大过程组及十大知识领域(附10大工具模板)
热门文章
- Codeforces Round #700 (Div. 1Div. 2)
- [NOIP2016 提高组] 愤怒的小鸟
- [AtCoder Educational DP Contest] J - Sushi(期望dp)
- [ZJOI2008]泡泡堂(田忌赛马贪心)
- P5039 [SHOI2010]最小生成树(网络流)
- 4.6模拟 宽度优先搜索
- P3180-[HAOI2016]地图【圆方树,莫队,分块】
- YbtOJ#631-次短路径【左偏树,最短路】
- P3302-[SDOI2013]森林【主席树,LCA,启发式合并】
- jzoj4382-[GDOI2016模拟3.11]历史【并查集】