zoukankan      html  css  js  c++  java
  • Java字符串到数组的转换--最后放大招

    本文是关于如何在Java中以不同方式将String转换为String Array的几种方法,按照惯例,文末会分享Groovy语言中的实现。

    split()方法

    字符串api是通过split()方法添加的,该方法使用分隔符作为输入,并且字符串将根据给定的分隔符进行拆分。最后,它以String []数组的形式返回每个拆分字符串。

    在上一篇文章中,我们深入了解了如何使用带有不同定界符的split()方法拆分字符串。

    查看下面的程序,并将空字符串“”传递给split()方法。

     
    public class FunTester {
     
        public static void main(String[] args) {
            String input = "FunTester";
            String[] split = input.split("");
            output(Arrays.asList(split));
        }
     
    }
    

    控制台输出:

    INFO-> 当前用户:fv,IP:10.60.192.21,工作目录:/Users/fv/Documents/workspace/fun/,系统编码格式:UTF-8,系统Mac OS X版本:10.15.7
    INFO-> 第1个:F
    INFO-> 第2个:u
    INFO-> 第3个:n
    INFO-> 第4个:T
    INFO-> 第5个:e
    INFO-> 第6个:s
    INFO-> 第7个:t
    INFO-> 第5个:e
    INFO-> 第9个:r
    
    Process finished with exit code 0
    
    

    input.split("");方法将字符串"FunTester"分割成到string[]数组,并将结果存储在split中。后面是输出list对象的方法。内容如下:

        public static void output(List list) {
            list.forEach(x -> output("第" + (list.indexOf(x) + 1) + "个:" + x.toString()));
        }
    
    

    现在,转换后的字符串数组长度和原始字符串长度应该相同。检查代码:

            output(input.length());
            output(split.length);
    

    控制台输出:

    9
    9
    

    正则表达式

    接下来,看看使用正则表达式的第二种方法,在很多时候,正则表达式可以简化我们对字符串的验证,例如:邮箱、手机号等等。

    再次需要使用split()方法和正则表达式,如下所示。

    public class FunTester {
     
        public static void main(String[] args) {
     
            String input = "FunTester";
            String[] split = input.split("(?!^)");
            output(Arrays.asList(split));
            output(input.length());
            output(split.length);
             
        }
     
    }
    

    控制台输出:

    INFO-> 当前用户:fv,IP:10.60.192.21,工作目录:/Users/fv/Documents/workspace/fun/,系统编码格式:UTF-8,系统Mac OS X版本:10.15.7
    INFO-> 第1个:F
    INFO-> 第2个:u
    INFO-> 第3个:n
    INFO-> 第4个:T
    INFO-> 第5个:e
    INFO-> 第6个:s
    INFO-> 第7个:t
    INFO-> 第5个:e
    INFO-> 第9个:r
    INFO-> 9
    INFO-> 9
    
    Process finished with exit code 0
    
    
    • 这里说明一下,split()方法源码中参数定义如下:String regex,再翻一下重载的方法 public String[] split(String regex, int limit)中的源码中做了很多判断之后才会使用正则,不要被参数名regex欺骗了。

    Guava

    Guava API还内置了对字符串数组转换的支持。当使用Guava时,这里涉及许多步骤。

    • 首先使用toCharArray()方法将字符串转换为char[]数组。
    • Chars.asList()方法将char数组转换为List
    • 最后使用List.transform()toArray()方法转换为String数组。
    • 的确是非常麻烦的。

    这是完整的Demo。

    public class FunTester {
     
        public static void main(String[] args) {
     
            String input = "FunTester";
            String[] slist = Lists.transform(Chars.asList(input.toCharArray()), Functions.toStringFunction()).toArray(ArrayUtils.EMPTY_STRING_ARRAY);
            output(Arrays.asList(slist));
            output(input.length());
            output(slist.length);
        }
     
    }
    

    控制台输出:

    与上面相同,不再重复。
    

    Groovy

    下面有请Groovy出场,代码比较简单,我保留了Java版本的第一行代码。

            String input = "FunTester";
            def list = input as List
            output(list)
            output(list.size())
            output(input.length())
    

    公众号FunTester首发,原创分享爱好者,腾讯云、开源中国和掘金社区首页推荐,知乎八级强者,欢迎关注、交流,禁止第三方擅自转载。

    FunTester热文精选

  • 相关阅读:
    高级特性(4)- 数据库编程
    UVA Jin Ge Jin Qu hao 12563
    UVA 116 Unidirectional TSP
    HDU 2224 The shortest path
    poj 2677 Tour
    【算法学习】双调欧几里得旅行商问题(动态规划)
    南洋理工大学 ACM 在线评测系统 矩形嵌套
    UVA The Tower of Babylon
    uva A Spy in the Metro(洛谷 P2583 地铁间谍)
    洛谷 P1095 守望者的逃离
  • 原文地址:https://www.cnblogs.com/FunTester/p/13924520.html
Copyright © 2011-2022 走看看