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文本块相关推荐

  1. java 读取txt乱码_java 逐行读取txt文本如何解决中文乱码

    java读取txt文本中如含有中文,可能会出现乱码,解决方案是: 1.要统一编码,java工程的编码,txt文本编码,java工程中的java文本编码都统一为utf-8: 2.利用 InputStre ...

  2. java的同步块_Java 同步块

    Java同步块用来标记一个方法或一个代码块为同步的.Java同步块可以用来避免竞态. Java同步关键字 在 Java 中使用 synchronized 来标记同步块.一个同步块是同步在某些对象上.同 ...

  3. java 读取css文件_java文件读取的两种方式

    JAVA中读取文件(二进制,字符)内容的几种方 JAVA中读取文件内容的方法有很多,比如按字节读取文件内容,按字符读取文件内容,按行读取文件内容,随机读取文件内容等方法,本文就以上方法的具体实现给出代 ...

  4. java 读取文件 效率_Java 逐行读取文本文件的几种方式以及效率对比

    前言 上周负责的模块中需要逐行读取文件内容, 写完之后对程序执行效率不太满意, 索性上网查了一下 Java 逐行读取文件内容的各种方法, 并且简单地比对了一下执行效率. 在此记录, 希望能够帮到有需要 ...

  5. java读取本地文件_java 读取本地文件实例详解

    java 读取本地文件实例详解 用javax.xml.w3c解析 实例代码: package cn.com.xinli.monitor.utils; import org.w3c.dom.Docume ...

  6. java 读取配置文件工具_java读取配置文件信息properties的工具类

    java读取配置文件信息properties的工具类,介绍一个工具PropertyReader.java,读取项目配置文件信息 package mymail; import java.io.File; ...

  7. java 读取本地文件_java 读取本地文件实例详解

    java 读取本地文件实例详解 用javax.xml.w3c解析 实例代码: package cn.com.xinli.monitor.utils; import org.w3c.dom.Docume ...

  8. java 读取excel模板_java如何读取excel表格的信息,java读取excel模板

    java如何读取excel表格的信息Java如何读取excel表格的信息,用java读取excel表格信息的方法:1.pass [workbook.getworkbook(新文件(' e ://exc ...

  9. java读取tif图片_java读取tiff格式图片信息的方式。

    java读取tiff图片信息,其实也挺简单的,用xmpcore.jar可以解析. File jpegFile = new File("D:\\1.tif"); Metadata m ...

最新文章

  1. C++ Char int string关系
  2. OpenCV梯度直方图HOG的实例(附完整代码)
  3. 最新处理器排名_安兔兔Android处理器天梯榜发布:最强的还是它
  4. oracle arp绑定mac地址,使用ARP命令来绑定IP和MAC地址
  5. python获取网站图片_python获取网站图片
  6. pytest测试框架(六)---使用skip和skipif跳过测试用例
  7. ARCGIS 拓扑规则阐述
  8. 【递归】n个数的全排列
  9. BERT+CRF互联网金融新实体发现
  10. php点广告送积分,PHP猜一猜奇偶商城积分促销模式
  11. glide加载gif图不显示动画_Android使用glide加载gif动画设置播放次数
  12. 【Day5.1】在坑人的免税店King Power蹭午餐
  13. 分析网易云用户运营的指标监控和召回机制
  14. Latex排版,表格标题总是出现在下方的解决方案
  15. 软件配置管理(SCM)
  16. 什么是LSB,MSB
  17. 安卓平板装MySQL_准备购入一部平板作为学习用具,有推荐的吗?
  18. 武汉大学计算机学院深造率,2017届本科毕业生深造率排名与分析
  19. 100种思维模型之人类误判心理思维模型-49
  20. 项目管理的五大过程组及十大知识领域(附10大工具模板)

热门文章

  1. Codeforces Round #700 (Div. 1Div. 2)
  2. [NOIP2016 提高组] 愤怒的小鸟
  3. [AtCoder Educational DP Contest] J - Sushi(期望dp)
  4. [ZJOI2008]泡泡堂(田忌赛马贪心)
  5. P5039 [SHOI2010]最小生成树(网络流)
  6. 4.6模拟 宽度优先搜索
  7. P3180-[HAOI2016]地图【圆方树,莫队,分块】
  8. YbtOJ#631-次短路径【左偏树,最短路】
  9. P3302-[SDOI2013]森林【主席树,LCA,启发式合并】
  10. jzoj4382-[GDOI2016模拟3.11]历史【并查集】