在java中string到数组的转换

我有一个string="name"; 我想转换成一个string数组。 我该怎么做? 有没有build立在function的Java? 手动我可以做到这一点,但我正在寻找一个functionbuild立的Java。

我想要一个数组,其中string的每个字符将是一个string。 像char'n'现在将存储在数组中的string“n”。

为了开始你的任务, String.split在正则expression式上分割string,这个expression式可能是一个空string:

 String[] ary = "abc".split(""); 

产生数组:

 (java.lang.String[]) [, a, b, c] 

摆脱空的第一个条目留给读者的练习:-)

注意:在Java 8中,不再包含空的第一个元素。

 String strName = "name"; String[] strArray = new String[] {strName}; System.out.println(strArray[0]); //prints "name" 

第二行分配一个长度为1的string数组。注意,你不需要自己指定一个长度,比如:

 String[] strArray = new String[1]; 

相反,长度由初始化器中的元素数决定。 运用

 String[] strArray = new String[] {strName, "name1", "name2"}; 

创build一个长度为3的数组。

假设你真的想要一个单字符数组(不是char[]Character[]

1.使用正则expression式:

 public static String[] singleChars(String s) { return s.split("(?!^)"); } 

零宽度的负向预测可以防止input开始时的模式匹配,所以你不会得到一个前导的空string。

2.使用番石榴 :

 import java.util.List; import org.apache.commons.lang.ArrayUtils; import com.google.common.base.Functions; import com.google.common.collect.Lists; import com.google.common.primitives.Chars; // ... public static String[] singleChars(String s) { return Lists.transform(Chars.asList(s.toCharArray()), Functions.toStringFunction()) .toArray(ArrayUtils.EMPTY_STRING_ARRAY); } 

我想这根本就不需要它,因为它不会比简单得多

 String[] array = {"name"}; 

当然,如果你坚持,你可以写:

 static String[] convert(String... array) { return array; } String[] array = convert("name","age","hobby"); 

[编辑]如果你想要单字母string,你可以使用:

 String[] s = "name".split(""); 

不幸的是,s [0]将是空的,但在这之后,字母n,a,m,e将会跟随。 如果这是一个问题,你可以使用例如System.arrayCopy来摆脱第一个数组入口。

 String data = "abc"; String[] arr = explode(data); public String[] explode(String s) { String[] arr = new String[s.length]; for(int i = 0; i < s.length; i++) { arr[i] = String.valueOf(s.charAt(i)); } return arr; } 

在java 8中,有一个方法可以做到这一点:toCharArray():

 String k = "abcdef"; char[] x = k.toCharArray(); 

这导致以下数组:

 [a,b,c,d,e,f] 

string数组=字符数组?

或者你有一个多字的string,每个字符都应该是一个数组元素?

String[] array = yourString.split(wordSeparator);

在java中简单使用.tocharArray()方法

 String k = "abc"; char alpha = k.tocharArray(); 

这应该在JAVA 8中工作得很好

另一种方法:

正如已经提到的,你可以很容易地将原来的String“name”转换为一个char数组:

 String originalString = "name"; char[] charArray = originalString.toCharArray(); 

为了继续这一思路,你可以把char数组转换成一个String数组:

 String[] stringArray = new String[charArray.length]; for (int i = 0; i < charArray.length; i++){ stringArray[i] = String.valueOf(charArray[i]); } 

在这一点上,你的stringArray将被填充你的原始string“name”的原始值。 例如,现在打电话

 System.out.println(stringArray[0]); 

在这种情况下,将返回值“n”(作为一个string)。

 /** * <pre> * MyUtils.splitString2SingleAlphaArray(null, "") = null * MyUtils.splitString2SingleAlphaArray("momdad", "") = [m,o,m,d,a,d] * </pre> * @param str the String to parse, may be null * @return an array of parsed Strings, {@code null} if null String input */ public static String[] splitString2SingleAlphaArray(String s){ if (s == null ) return null; char[] c = s.toCharArray(); String[] sArray = new String[c.length]; for (int i = 0; i < c.length; i++) { sArray[i] = String.valueOf(c[i]); } return sArray; } 

方法String.split会生成空的第一个,你必须从数组中删除它。 这很无聊。

你可以使用string.chars().mapToObj(e -> new String(new char[] {e})); ,虽然这是相当长的,只适用于Java 8.这里有几个方法:

string.split(""); (Has an extra whitespace character at the beginning of the array if used before Java 8) string.split(""); (Has an extra whitespace character at the beginning of the array if used before Java 8) string.split("|"); string.split("(?!^)"); Arrays.toString(string.toCharArray()).substring(1, string.length() * 3 + 1).split(", ");

最后一个是不必要的长,这只是为了好玩!

基于这个问题的标题,我来到这里想要将一个string转换成由一些分隔符分割的子串的数组。 我会在这里为那些可能有同样问题的人添加这个答案。

这通过在每个空间处分割string来形成一组单词:

 String str = "string to string array conversion in java"; String delimiter = " "; String strArray[] = str.split(delimiter); 

这将创build以下数组:

 // [string, to, string, array, conversion, in, java] 

资源

在Java 8testing

这里有使用拆分方法将简单的string转换为string数组。

 String [] stringArray="My Name is ABC".split(" "); 

产量

 stringArray[0]="My"; stringArray[1]="Name"; stringArray[2]="is"; stringArray[3]="ABC"; 

用String.split()分割一个空string将返回一个包含空string单个元素数组 。 在大多数情况下,你可能会喜欢得到一个空的数组,或者如果你传入一个null,这正是你用org.apache.commons.lang3.StringUtils.split(str)得到的 。

 import org.apache.commons.lang3.StringUtils; StringUtils.split(null) => null StringUtils.split("") => [] StringUtils.split("abc def") => ["abc", "def"] StringUtils.split("abc def") => ["abc", "def"] StringUtils.split(" abc ") => ["abc"] 

另一个选项是谷歌guava Splitter.split()和Splitter.splitToList() ,它们相应地返回一个迭代器和一个列表。 与apache版本不同的是,Splitter将会在null上抛出一个NPE:

 import com.google.common.base.Splitter; Splitter SPLITTER = Splitter.on(',').trimResults().omitEmptyStrings(); SPLITTER.split("a,b, c , , ,, ") => [a, b, c] SPLITTER.split("") => [] SPLITTER.split(" ") => [] SPLITTER.split(null) => NullPointerException 

如果你想要一个列表,而不是一个迭代器,那么使用Splitter.splitToList()的味道。