• 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热文精选

  • 相关阅读:
    Linux pwn入门教程(1)——栈溢出基础
    Java代码审计入门篇
    利用Burp Suite攻击Web应用
    记一次对某企业的渗透测试实战
    Python 绝技 —— UDP 服务器与客户端
    SQL注入之重新认识
    文件上传和WAF的攻与防
    phpMyAdmin 4.7.x CSRF 漏洞利用
    Powershell渗透测试系列–进阶篇
    AFN检測网络情况
  • 原文地址:https://www.cnblogs.com/FunTester/p/13924520.html
Copyright © 2020-2023  润新知