java中的字符串到字符串数组转换

时间:2010-08-05 09:56:35

标签: java string

我有string="name"; 我想转换成字符串数组。 我该怎么做? 有没有内置的java函数?手动我可以做到,但我正在寻找一个内置函数的java。

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

15 个答案:

答案 0 :(得分:175)

为了让你开始工作,String.split在正则表达式上拆分字符串,这个表达式可能是一个空字符串:

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

产生数组:

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

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

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

答案 1 :(得分:41)

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"};

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

答案 2 :(得分:14)

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

1。使用正则表达式:

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

零宽度负向前瞻会阻止输入开头的模式匹配,因此您不会获得前导空字符串。

2。使用Guava

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);
}

答案 3 :(得分:13)

我想根本不需要它,因为它不会比

更简单
String[] array = {"name"};

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

static String[] convert(String... array) {
   return array;
}

String[] array = convert("name","age","hobby"); 

[编辑] 如果您想要单字母字符串,可以使用:

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

不幸的是,s [0]将为空,但此后字母n,a,m,e将跟随。如果这是一个问题,您可以使用例如System.arrayCopy是为了摆脱第一个数组条目。

答案 4 :(得分:10)

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;
}

答案 5 :(得分:8)

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

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

这导致以下数组:

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

答案 6 :(得分:4)

String array =字符数组?

或者你有一个包含多个单词的字符串,每个单词都应该是一个数组元素吗?

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

答案 7 :(得分:3)

答案 8 :(得分:3)

只需在java中使用.tocharArray()方法

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

这应该在JAVA 8中运行得很好

答案 9 :(得分:2)

另一种方法:

如前所述,您可以非常轻松地将原始字符串“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将填充原始字符串“name”中的原始值。 例如,现在调用

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

在这种情况下,将返回值“n”(作为字符串)。

答案 10 :(得分:2)

使用String.split()拆分空字符串会返回包含空字符串的单个元素数组。在大多数情况下,你可能更喜欢获得一个空数组,如果你传入一个空数,则为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"]

另一个选项是google 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()

答案 11 :(得分:1)

/**
 * <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将生成空的1st,您必须将其从数组中删除。很无聊。

答案 12 :(得分:1)

你可以使用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("|"); string.split("(?!^)"); Arrays.toString(string.toCharArray()).substring(1, string.length() * 3 + 1).split(", ");

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

答案 13 :(得分:1)

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

这会通过在每个空格处分割字符串来生成单词数组:

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

这会创建以下数组:

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

Source

在Java 8中测试

答案 14 :(得分:1)

这里使用split方法将简单字符串转换为字符串数组。

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

输出

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