Java 中字符串操作的函数式方法

本文深入研究了 String 类中的一些方法,这些方法能够以函数式编程方式进行处理。

Java String

在Java的最新更新中,String 类经历了一系列重要的方法添加。某些方法现在生成 Stream 类的实例,而其中一些是高阶函数。合并这些方法的目的是提供一种以面向流的方式处理字符串的简化方法。 

以面向流的方式处理字符串带来了简化代码、增强表现力的优点。这使得应用过滤、映射、缩减等操作变得更加容易。

另一个优点是Stream API支持并行处理,允许通过这些返回流的方法使用并行流。这使得利用多核处理器来有效处理大字符串成为可能。

本文深入研究了String 类中的一些方法,这些方法能够以函数式编程方式进行处理。

# chars()

“chars()”方法通过返回一个 IntStream 来促进 Java 中有效的字符管理。此 IntStream 表示一系列 Integer 值,每个值对应于所提供字符串中字符的 Unicode 代码点。 

代码点是 Unicode 标准中分配给字符的数字标识符,用于字符编码的目的。

让我们通过一个例子来理解“chars()”。编写一个程序,从字符串中删除给定的字符。让我们探索通过命令式、非函数式方法来应对这一挑战,避免使用chars()或流方法。

private static String removeChar(String input, char c){
     StringBuilder sb = new StringBuilder();
     char[] charArray = input.toCharArray();
     for (char ch : charArray) {
         if (ch != c) {
             sb.append(ch);
         }
     }
     return sb.toString();
 }

让我们将其与函数式方法进行比较:

private static String removeChar(String str, char c){
     return str.chars()
               .filter(ch -> ch != c)
               .mapToObj(ch -> String.valueOf((char) ch))
               .collect(Collectors.joining());
 }

命令式、非函数式方法涉及使用 StringBuilder 对字符进行传统迭代来构建修改后的字符串。另一方面,函数式方法利用 chars() 方法和 Stream API,提供更简洁、更具表现力的解决方案。

#transform()

 transform函数是一个高阶函数,接受Function作为参数。转换函数提供了一种更简洁、更实用的方式来对字符串应用转换。

转换函数可用于字符串中的链接转换,例如,考虑您想要清理和格式化在表单中输入的用户输入的场景。用户在输入姓名时可能会包含额外的空格、混合大小写和不必要的字符。可以使用字符串链接来标准化和清理此输入。

String userInput = "  JoHN-dOe  ";
 String cleanedInput = userInput
                         .transform(String :: trim)
                         .transform(String :: toLowerCase)
                         .transform(user -> user.replaceAll("-", ""));
 cleanedInput // johndoe

#lines()

 lines函数返回从给定字符串中提取的行流,用行终止符(例如\n、\r和\r\n)分隔。Java Stringlines() 方法比 split() 方法更有优势,因为它提供惰性元素并且可以更快地检测行终止符。如果字符串为空,lines 函数将返回零行。

String text = "The lines function returns a stream of lines extracted ,\nThe Java String lines() method proves advantageous ;\nIn cases where the string is empty,\n"
         + "the lines’ function returns zero lines.";
 
 text.lines()
         .map(String :: toUpperCase)
         .filter(line -> line.contains("I"))
         .forEach(System.out::println);

“text”字符串包含多行文本。我们使用lines()方法从文本中获取行流。然后我们使用映射操作将每一行转换为大写。过滤操作用于仅保留包含字母“I”的行,而 forEach 操作则打印修改后的行。

所解释的函数提供了一种强大而简洁的字符串处理方式。它们通过利用流进行有效的操作和过滤来提供功能性方法,从而提高不变性。将这些函数与其他流操作链接起来可以进行复杂而简洁的转换,从而促进更干净、更实用的风格。


文章来源地址https://www.toymoban.com/diary/java/589.html

到此这篇关于Java 中字符串操作的函数式方法的文章就介绍到这了,更多相关内容可以在右上角搜索或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

原文地址:https://www.toymoban.com/diary/java/589.html

如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请联系站长进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用
教你一招!如何查询Python安装位置?
上一篇 2023年12月12日 10:04
什么是 iOS 应用模拟器及其工作原理?
下一篇 2023年12月12日 10:26

相关文章

  • Java中的String类的常用方法(对于字符串的常用操作)

    目录 一、获取指定索引的字符 二、 获取指定字符或者字符串的索引位置 三、判断字符串是否以指定内容开头或结尾 四、替换指定的字符或者是字符串 五、获取字符串的子串 六、将字符串转换为字符数组  七、比较字符串的内容是否相等  八、连接字符串 九、比较两个字

    2024年02月20日
    浏览(56)
  • 【Kotlin】字符串操作 ① ( 截取字符串函数 substring | 拆分字符串函数 split | 解构语法特性 )

    Kotlin 中提供了 截取字符串函数 substring , 可接收 IntRange 类型的参数 , 这是 整数范围 类型 ; 截取字符串函数 substring 函数原型为 : 整数范围类型 : 其整数范围是 {0 , 1 , 2 , 3} ; 其整数范围是 {0 , 1 , 2} ; 代码示例 : 执行结果 : 拆分字符串函数 split 返回的是 List 集合 ; 拆分字符串函

    2023年04月08日
    浏览(42)
  • 字符串函数和内存操作函数

    目录 0.字符串回顾 1.函数介绍 1.1 strlen 1.2 strcpy 1.3 strcat 1.4 strcmp 1.5 strncpy 1.6 strncat 1.7 strncmp 1.8 strstr 1.9 strtok 1.10 strerror 1.11 memcpy 1.12 memmove 1.13 memcmp 1.14 memset 1.15 字符相关函数 字符分类函数 字符转换函数 2.函数模拟实现 2.1模拟实现strlen 2.2模拟实现strcpy 2.3模拟实现strcat 2.4模拟

    2024年02月15日
    浏览(93)
  • c语言——字符串函数和内存操作函数

    包含在string.h头文件里 功能:返回字符串中有效字符的个数,遇到‘\\0’结束,不包括结束符‘\\0’. 函数的参数为------const char* str:字符指针 返回值的类型------size_t:无符号整数(即:unsigned int) 模拟实现strlen: 方法一:计数器的方法 方法二:不能创建临时变量的计数器

    2024年02月14日
    浏览(56)
  • C语言----字符串操作函数汇总

            在C的库函数中,有丰富的字符串操作函数,在平时的coding中灵活运用这些库函数会达到事半功倍的效果 char *strcpy(s, ct) 将字符串ct(包括\\\'\\0\\\')复制到字符串s中,并返回s,需要注意s的长度是否容纳ct。 char *strncpy(s, ct, n) 将字符串ct中最多n个字符复制到字符串s中,并

    2024年02月14日
    浏览(33)
  • 金丹三层 —— 内存函数和字符串操作函数详解

    目录 一.修炼必备 二.字符串操作的常用函数 2.1 strlen()函数 2.2 strcpy()函数 2.3 strcat()函数 2.4 strcmp()函数 2.5 strstr()函数 2.6 strtok()函数 2.7 strerror()函数 三.内存操作的常用函数 3.1 memcpy()函数 3.2 memmove()函数 3.3 memcmp()函数 结语 1.入门必备:VS2019社区版,下载地址:Visual Studio 较旧的

    2023年04月08日
    浏览(34)
  • 【C语言进阶(三)】字符串操作函数

    💓博主CSDN主页:杭电码农-NEO💓   ⏩专栏分类:C语言学习分享⏪   🚚代码仓库:NEO的学习日记🚚   🌹关注我🫵带你学习更多C语言知识   🔝🔝 C语言的标准库为我们提供了丰富的字符串操作函数与内存操作函数,有我们熟悉的 strlen ,strcpy ,也有我们不熟悉的 strchr , strstr 等

    2024年02月09日
    浏览(35)
  • SQL Server截取字符串函数操作

    目录 1、SUBSTRING()函数 2、LEFT()函数  3、RIGHT()函数  4、CHARINDEX()函数  5、LEN函数 1、SUBSTRING()函数         含义:从指定位置开始截取指定数量的字符。         使用:SUBSTRING( 原字符 , 截取字符的起始位置 , 截取字符数量 )         举例:                 1、 截取字

    2024年02月01日
    浏览(42)
  • PostgreSql 字符串函数及操作符

    函数 返回类型 描述 示例 结果 string||string text 字符串连接 ‘Post’||‘greSQL’ PostgreSQL bit_length(string) int 字符串中的二进制位数的个数 bit_length(‘jose’) 32 char_length(string) int 字符串中的字符个数 char_length(‘数据库’) 3 convert(string using conversion_name) text 使用转换名字改变编码,转

    2024年02月12日
    浏览(37)
  • 【Lua语法】字符串操作、字符串中的方法

    注意:这些方法不会改变原字符串,只会返回一个新字符串

    2024年02月15日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包