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())
复制代码
- 只用了一个
as
关键字就可以了,这里的as
操作符是可以被重写的。
Java字符串到数组的转换--最后放大招的更多相关文章
- java 字符串和集合互相转换
今天在写项目的时候遇到一个问题,就是要把得到的一个集合转换成字符串,发现 import org.apache.commons.lang.StringUtils; 有这么一个简单的方法:String s ...
- java字符串,数组,集合框架重点
1.字符串的字面量是否自动生成一个字符串的变量? String str1 = “abc”; Sring str2 = new String (“abc”); 对于str1:Jvm在遇到双 ...
- Java字符串与数组
字符串查找 indexOf(String s)方法返回搜索的字符或字符串首次出现的位置 lastIndexOf(String s)方法返回搜索的字符或字符串最后一次出现的位置 获取索引位置的字符 ch ...
- java 字符串的截取、转换、分割
1.截取 package java07; /* 字符串的截取方法: public String substring(int index):截取从参数位置一直到字符串末尾,返回新字符串 public S ...
- java集合与数组之间转换
数组转换为集合 采用java中集合自带的asList()方法就可以完成转换了 String[] array = new String[] {"zhu", "wen&quo ...
- java:字符串与数字的转换
各种数字类型转换成字符串型 int i =8; String s =Integer.toString(i);// String g =String.valueOf(i); // 其中 value 为任 ...
- JAVA将Byte数组(byte[])转换成文件
/** * 将Byte数组转换成文件 * @param bytes byte数组 * @param filePath 文件路径 如 D://test/ 最后"/"结尾 * @par ...
- java字符数组char[]和字符串String之间的转换
java字符数组char[]和字符串String之间的转换 觉得有用的话,欢迎一起讨论相互学习~Follow Me 使用String.valueOf()将字符数组转换成字符串 void (){ cha ...
- java中字节数组byte[]和字符(字符串)之间的转换
转自:http://blog.csdn.net/linlzk/article/details/6566124 Java与其他语言编写的程序进行tcp/ip socket通讯时,通讯内容一般都转换成by ...
随机推荐
- 【题解】CF940F Machine Learning
Link 题目大意:单点修改,每次询问一个区间的所有颜色出现次数的\(\text{Mex}.\) 例如,区间中三种颜色分别出现了\(2,2,3\)次,又因为其他颜色出现次数一定是\(0\),所以这里的 ...
- C# excel文件导入导出
欢迎关注微信公众号 C#编程大全 这里有更多入门级实例帮你快速成长 在C#交流群里,看到很多小伙伴在excel数据导入导出到C#界面上存在疑惑,所以今天专门做了这个主题,希望大家有所收获! 环境:wi ...
- shell-脚本开发基本规范及习惯
1.shell-脚本开发基本规范及习惯 1.开头指定脚本解析器 #!/bin/sh 或#!/bin/bash 2.开头加版本版权等信息 #Date: 2018/3/26 #Author: zhangs ...
- Linux桌面环境配置
目录 更换软件源 中文输入法 firefox安装flash插件 编译安装Vim 关闭蓝牙开机自启 yakuake无法正常使用 在中文环境下将默认目录修改成英文 电脑换成了thinkpad x1c 20 ...
- 多测师_git和github_004
git Git(读音为/gɪt/.),是目前世界上最先进的分布式版本控制系统,可以有效.高速的处理从很小到非常大的项目版本管理.Git 是 Linus Torvalds 为了帮助管理 Linux 内核 ...
- day29 Pyhton 面向对象 继承进阶
一.内容回顾 初识继承 父类\基类\超类 子类\派生类 派生 :派生方法.派生属性 单继承 继承的语法class子类名(父类名) 解决开发中代码冗余的问题 子类继承了父类之后,可以调用父类中的方法 如 ...
- fedora30平台安装docker 19.03
一,下载docker 1,说明:docker的打包对于fedora的支持很及时, 所以在fedora 30/31上都可以直接使用官方的rpm包 下载地址: https://download.docke ...
- selenium---输入内容后搜索
from time import sleep from selenium import webdriver br = webdriver.Chrome() url = "https://ww ...
- dubbo配置加载优先级
优先级从高到低: JVM 启动 -D 参数优先,这样可以使用户在部署和启动时进行参数重写,比如在启动时需改变协议的端口: XML 次之,如果在 XML 中有配置,则 dubbo.properties ...
- 没事学些KVM(三)虚拟机基础管理
创建完成虚拟机后,需要对虚拟机进行基础管理学习 virsh list #查看虚拟机列表 改命令只能查看正在运行或挂起的虚拟机 如果需要查看所有的虚拟机需要添加--all 参数 virsh start ...