本文是关于如何在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())
复制代码
  • 只用了一个as关键字就可以了,这里的as操作符是可以被重写的。

Java字符串到数组的转换--最后放大招的更多相关文章

  1. java 字符串和集合互相转换

    今天在写项目的时候遇到一个问题,就是要把得到的一个集合转换成字符串,发现 import org.apache.commons.lang.StringUtils; 有这么一个简单的方法:String s ...

  2. java字符串,数组,集合框架重点

    1.字符串的字面量是否自动生成一个字符串的变量? String  str1  =  “abc”; Sring  str2  =   new String (“abc”); 对于str1:Jvm在遇到双 ...

  3. Java字符串与数组

    字符串查找 indexOf(String s)方法返回搜索的字符或字符串首次出现的位置 lastIndexOf(String s)方法返回搜索的字符或字符串最后一次出现的位置 获取索引位置的字符 ch ...

  4. java 字符串的截取、转换、分割

    1.截取 package java07; /* 字符串的截取方法: public String substring(int index):截取从参数位置一直到字符串末尾,返回新字符串 public S ...

  5. java集合与数组之间转换

    数组转换为集合 采用java中集合自带的asList()方法就可以完成转换了 String[] array = new String[] {"zhu", "wen&quo ...

  6. java:字符串与数字的转换

    各种数字类型转换成字符串型 int i =8; String s =Integer.toString(i);// String g =String.valueOf(i); // 其中 value 为任 ...

  7. JAVA将Byte数组(byte[])转换成文件

    /** * 将Byte数组转换成文件 * @param bytes byte数组 * @param filePath 文件路径 如 D://test/ 最后"/"结尾 * @par ...

  8. java字符数组char[]和字符串String之间的转换

    java字符数组char[]和字符串String之间的转换 觉得有用的话,欢迎一起讨论相互学习~Follow Me 使用String.valueOf()将字符数组转换成字符串 void (){ cha ...

  9. java中字节数组byte[]和字符(字符串)之间的转换

    转自:http://blog.csdn.net/linlzk/article/details/6566124 Java与其他语言编写的程序进行tcp/ip socket通讯时,通讯内容一般都转换成by ...

随机推荐

  1. 跟我一起学Redis之五种基本类型及其应用场景举例(干了6个小时)

    前言 来啦,老弟?来啦,上一篇就当唠唠嗑,接下来就开始进行实操撸命令,计划是先整体单纯说说Redis的各种用法和应用,最后再结合代码归纳总结. Redis默认有16个数据库(编号为0~15),默认使用 ...

  2. 用< 100行代码向EPUB或Web服务器添加视频回放

    下载source - 32.3 KB 下载latest version from GituHub 介绍 在我 在关于CodeProject的前一篇文章中,我展示了一个简单的EPUB查看器 Androi ...

  3. VUE 安装项目

    注意:在cmd中执行的命令 1,前提是安装了node.js 查看 npm 版本号 2,创建项目路径 mkdir vue cd vue 3,安装vue-cli (脚手架) npm install -个v ...

  4. Redis 中 HyperLogLog 的使用场景

    什么是基数估算 HyperLogLog 是一种基数估算算法.所谓基数估算,就是估算在一批数据中,不重复元素的个数有多少. 从数学上来说,基数估计这个问题的详细描述是:对于一个数据流 {x1,x2,.. ...

  5. leaflet如何加载10万数据

    作为一名GIS开发者,你工作中一定遇到过这种问题,根据业务设计,需要在地图上添加1万+条数据,数据或是点.或是线.或是面.但不管哪种,当你添加到5000条时,地图操作就会出现明显的卡顿.当你添加超过1 ...

  6. golang通过cgo调用lua

    目录 1.前期准备 2.测试go代码 3.完成的一个学习项目 4.总结 1.前期准备 1.第三方库:https://github.com/aarzilli/golua 2.下载lua源码:https: ...

  7. 单源文件目录makefile

    目录结构 由于只是用来编译简单的小型程序,所以目录尽量简洁: . ├── build │   ├── bin │   ├── .dep │   └── obj ├── makefile └── src ...

  8. BUUCTF-misc九连环 详解

    这个没什么玄学,我们解压出来一张照片,放到hxd中搂一眼,最后结尾的那几行中看到了zip压缩包的结尾标识符,难道这里面还有压缩包,于是我们就formostlrb 果然有图片有压缩包 我们打开压缩包看到 ...

  9. Elasticsearch修改字段类型 (_reindex)

    1.设置索引t2为想要的数据类型 2.将t1 reindex到t2 3.数据reindex完成删除t1 4.设置索引t1为想要的数据类型 5.将t2 reindex到t1 如果 _reindex 超时 ...

  10. 【并查集】BZOJ 1854 连续攻击游戏

    题目内容 洛谷链接 lxhgww最近迷上了一款游戏,在游戏里,他拥有很多的装备,每种装备都有2个属性,这些属性的值用[1,10000]之间的数表示.当他使用某种装备时,他只能使用该装备的某一个属性.并 ...