热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Java12字符串方法

Java12wasreleasedinMarch2019.TherearefournewmethodsaddedinStringclass.Inthistutorial,wewil

Java 12 was released in March 2019. There are four new methods added in String class. In this tutorial, we will look into these new methods in detail.

Java 12于2019年3月发布。String类中添加了四个新方法。 在本教程中,我们将详细研究这些新方法。

1.缩进 (1. indent(int n))

This method adjusts the indentation of each line in the string based on the value of ‘n’ and also normalizes line termination characters.

此方法根据'n'的值调整字符串中每行的缩进量,并规范行终止符。

  • If n > 0, then n spaces (U+0020) are inserted at the beginning of each line.

    如果n> 0,则在每行的开头插入n个空格(U + 0020)。
  • If n <0, then up to n white space characters are removed from the beginning of each line. If a given line does not contain sufficient white space then all leading white space characters are removed. The tab character is also treated as a single character.

    如果n <0&#xff0c;则从每行开头最多删除n个空格字符。 如果给定的行没有足够的空格&#xff0c;那么将删除所有前导空格字符。 制表符也被视为单个字符。
  • If n &#61; 0, then the line remains unchanged. However, line terminators are still normalized.

    如果n &#61; 0&#xff0c;则该行保持不变。 但是&#xff0c;行终止符仍被标准化。

String str &#61; "*****\n Hi\n \tHello Pankaj\rHow are you?\n*****";System.out.println(str.indent(0));
System.out.println(str.indent(3));
System.out.println(str.indent(-3));

Output:

输出&#xff1a;

*****HiHello Pankaj
How are you?
**********HiHello PankajHow are you?**********
Hi
Hello Pankaj
How are you?
*****

Let’s look into the same examples through jshell.

让我们通过jshell看同样的例子。

➜ ~ jshell
| Welcome to JShell -- Version 12
| For an introduction type: /help introjshell> String str &#61; "*****\n Hi\n \tHello Pankaj\rHow are you?\n*****";
str &#61;&#61;> "*****\n Hi\n \tHello Pankaj\rHow are you?\n*****"jshell> str.indent(0)
$2 &#61;&#61;> "*****\n Hi\n \tHello Pankaj\nHow are you?\n*****\n"jshell> str.indent(3)
$3 &#61;&#61;> " *****\n Hi\n \tHello Pankaj\n How are you?\n *****\n"jshell> str.indent(-3)
$4 &#61;&#61;> "*****\nHi\nHello Pankaj\nHow are you?\n*****\n"jshell>

Notice that \r is being normalized to \n when indent() method is called.

注意&#xff0c;调用indent&#xff08;&#xff09;方法时&#xff0c;\ r被标准化为\ n。

2. transform&#xff08;Function <&#xff1f;super String&#xff0c;&#xff1f;扩展R> f&#xff09; (2. transform(Function f))

This method allows us to call a function on the given string. The function should expect a single String argument and produce an R result.

此方法使我们可以在给定的字符串上调用函数。 该函数应该期望一个String参数&#xff0c;并产生一个R结果。

Let’s look at an example where we will use transform() method to convert a CSV string to the list of strings. Notice the use of lambda expressions to implement the functional interface.

让我们看一个示例&#xff0c;在该示例中&#xff0c;我们将使用transform&#xff08;&#xff09;方法将CSV字符串转换为字符串列表。 注意使用lambda表达式实现功能接口 。

String s &#61; "Hi,Hello,Howdy";
List strList &#61; s.transform(s1 -> {return Arrays.asList(s1.split(","));});
System.out.println(strList);

Output:

输出&#xff1a;

3.可选的 describeConstable&#xff08;&#xff09; (3. Optional describeConstable())

Java 12 has introduced Constants API in JEP 334. If you look at the String class documentation, it implements two new interfaces from Constants API – Constable, and ConstantDesc. This method is declared in the Constable interface and implemented in the String class.

Java 12在JEP 334中引入了Constants API。 如果您查看String类文档&#xff0c;它将实现Constants API的两个新接口-Constable和ConstantDesc。 此方法在Constable接口中声明&#xff0c;并在String类中实现。

This method returns an Optional containing the nominal descriptor for this instance, which is the instance itself.

此方法返回一个Optional&#xff0c;其中包含该实例的名义描述符&#xff0c;即实例本身。

String so &#61; "Hello";
Optional os &#61; so.describeConstable();
System.out.println(os);
System.out.println(os.get());

Output:

输出&#xff1a;

Optional[Hello]
Hello
Hello

Java String Method DescribeConstable

Java String Method DescribeConstable

Java字符串方法DescribeConstable

4.字符串resolveConstantDesc&#xff08;&#xff08;MethodHandles.Lookup查找&#xff09; (4. String resolveConstantDesc​(MethodHandles.Lookup lookup))

This method is part of Constants API and declared in ConstantDesc interface. It resolves this instance as a ConstantDesc, the result of which is the instance itself.

此方法是Constants API的一部分&#xff0c;并在ConstantDesc接口中声明。 它将实例解析为ConstantDesc&#xff0c;其结果就是实例本身。

jshell> import java.lang.invoke.MethodHandles;jshell> String so1 &#61; "Hello";
so1 &#61;&#61;> "Hello"jshell> so1.resolveConstantDesc(MethodHandles.lookup());
$18 &#61;&#61;> "Hello"

结论 (Conclusion)

The indent() and transform() methods are a great addition to the String class. The Constants API methods don’t have much usage for normal development related tasks.

indent&#xff08;&#xff09;和transform&#xff08;&#xff09;方法是String类的一个很好的补充。 Constants API方法在正常的开发相关任务中没有太多用处。

翻译自: https://www.journaldev.com/28673/java-12-string-methods



推荐阅读
  • 自动轮播,反转播放的ViewPagerAdapter的使用方法和效果展示
    本文介绍了如何使用自动轮播、反转播放的ViewPagerAdapter,并展示了其效果。该ViewPagerAdapter支持无限循环、触摸暂停、切换缩放等功能。同时提供了使用GIF.gif的示例和github地址。通过LoopFragmentPagerAdapter类的getActualCount、getActualItem和getActualPagerTitle方法可以实现自定义的循环效果和标题展示。 ... [详细]
  • 正则表达式及其范例
    为什么80%的码农都做不了架构师?一、前言部分控制台输入的字符串,编译成java字符串之后才送进内存,比如控制台打\, ... [详细]
  • 本文介绍了设计师伊振华受邀参与沈阳市智慧城市运行管理中心项目的整体设计,并以数字赋能和创新驱动高质量发展的理念,建设了集成、智慧、高效的一体化城市综合管理平台,促进了城市的数字化转型。该中心被称为当代城市的智能心脏,为沈阳市的智慧城市建设做出了重要贡献。 ... [详细]
  • 本文介绍了如何在给定的有序字符序列中插入新字符,并保持序列的有序性。通过示例代码演示了插入过程,以及插入后的字符序列。 ... [详细]
  • eclipse学习(第三章:ssh中的Hibernate)——11.Hibernate的缓存(2级缓存,get和load)
    本文介绍了eclipse学习中的第三章内容,主要讲解了ssh中的Hibernate的缓存,包括2级缓存和get方法、load方法的区别。文章还涉及了项目实践和相关知识点的讲解。 ... [详细]
  • Java String与StringBuffer的区别及其应用场景
    本文主要介绍了Java中String和StringBuffer的区别,String是不可变的,而StringBuffer是可变的。StringBuffer在进行字符串处理时不生成新的对象,内存使用上要优于String类。因此,在需要频繁对字符串进行修改的情况下,使用StringBuffer更加适合。同时,文章还介绍了String和StringBuffer的应用场景。 ... [详细]
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
  • 深度学习中的Vision Transformer (ViT)详解
    本文详细介绍了深度学习中的Vision Transformer (ViT)方法。首先介绍了相关工作和ViT的基本原理,包括图像块嵌入、可学习的嵌入、位置嵌入和Transformer编码器等。接着讨论了ViT的张量维度变化、归纳偏置与混合架构、微调及更高分辨率等方面。最后给出了实验结果和相关代码的链接。本文的研究表明,对于CV任务,直接应用纯Transformer架构于图像块序列是可行的,无需依赖于卷积网络。 ... [详细]
  • 先看官方文档TheJavaTutorialshavebeenwrittenforJDK8.Examplesandpracticesdescribedinthispagedontta ... [详细]
  • svnWebUI:一款现代化的svn服务端管理软件
    svnWebUI是一款图形化管理服务端Subversion的配置工具,适用于非程序员使用。它解决了svn用户和权限配置繁琐且不便的问题,提供了现代化的web界面,让svn服务端管理变得轻松。演示地址:http://svn.nginxwebui.cn:6060。 ... [详细]
  • node.jsrequire和ES6导入导出的区别原 ... [详细]
  • Spring框架《一》简介
    Spring框架《一》1.Spring概述1.1简介1.2Spring模板二、IOC容器和Bean1.IOC和DI简介2.三种通过类型获取bean3.给bean的属性赋值3.1依赖 ... [详细]
  • 本文介绍了在Go语言中可见性与scope的规则,包括在函数内外声明的可见性、命名规范和命名风格,以及变量声明和短变量声明的语法。同时,还介绍了变量的生命周期,包括包级别变量和局部变量的生命周期,以及变量在堆和栈上分配的规则和逃逸分析的概念。 ... [详细]
  • 语义分割系列3SegNet(pytorch实现)
    SegNet手稿最早是在2015年12月投出,和FCN属于同时期作品。稍晚于FCN,既然属于后来者,又是与FCN同属于语义分割网络 ... [详细]
author-avatar
水晶玻璃新座
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有