如何将一个字符串转换为包含每个字符的字符串数组

8

我这里有一个小问题。我需要将从控制台读取的字符串转换为该字符串的每个字符。例如字符串:“aabbab”,我想把它转换成字符串数组。我该怎么做?


3
如果Joachim的答案对你有用,你应该选择他的回答作为官方答案。 - VonC
6个回答

21
String[] result = input.split("(?!^)");

这个代码会将输入的字符串按照在字符串开头之前不是空字符串的所有空字符串进行分割。


当我执行以下代码时:String test = "This is a test"; 然后我执行以下代码:String[] test2 = test.split("(?!^)");数组只包含第一个单词的字符..? - Nathan F.
@thefiscster510:我无法重现这个问题,对我来说它完全正常。 - Joachim Sauer
@JoachimSauer 括号内的"(?!^)"是什么意思/作用? - Asker

17
String x = "stackoverflow";
String [] y = x.split("");

5
如果您指的是字符串数组,则意味着字符数组:
public class Test
{
    public static void main(String[] args)
    {
        String test = "aabbab ";
        char[] t = test.toCharArray();

        for(char c : t)
            System.out.println(c);    

        System.out.println("The end!");    
    }
}  

如果没有,String.split()函数可以将一个字符串转换为字符串数组。
查看这些String.split示例。
/* String to split. */
String str = "one-two-three";
String[] temp;

/* delimiter */
String delimiter = "-";
/* given string will be split by the argument delimiter provided. */
temp = str.split(delimiter);
/* print substrings */
for(int i =0; i < temp.length ; i++)
  System.out.println(temp[i]);

Joachim他的回答中提出的input.split("(?!^)")是基于以下内容:

  • '?!' 零宽度负向先行断言(请参见Lookaround
  • 插入符号 '^' 作为锚点匹配正则表达式模式所应用的字符串的开头

任何不是第一个的字符都会被分割。空字符串将不会被分割,但会返回一个空数组。


2
那是一个字符数组,不是字符串数组。 - Chii
@Chii:没错,我现在已经展示了char[]String[]两种结果。 - VonC

2
你的意思是想要执行"aabbab".toCharArray(); ? 这将返回一个字符数组。或者你实际上希望结果数组包含单个字符字符串对象吗?

1
你可以使用 String.split(String regex) 方法:
String input = "aabbab";
String[] parts = input.split("(?!^)");

1
由于每个字符都是分隔符,因此没有任何字符是数据,因此您将获得一个空数组。 - Joachim Sauer
谢谢,不知道它可以与split一起使用,但为什么要用?!^分割?因为字符串中没有这个字符吗? - gingergeek
@unknown:这是一个正则表达式,意思是“一个空字符串不以字符串开头为前提”。因此它匹配每个字符之间的空格并在其上进行拆分。 - Joachim Sauer

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接