将Java中的字符串分解为字符串数组

时间:2012-08-07 00:24:23

标签: java string

我已经彻底研究过这个主题,包括本网站上的问题和答案.... 这是我的基本代码:

import java.util.Scanner;  
class StringSplit {  
public static void main(String[] args)   
{  
    System.out.println("Enter String");    
    Scanner io = new Scanner(System.in);  
    String input = io.next();  
    String[] keywords = input.split(" ");  
    System.out.println("keywords" + keywords);      
}   

我的目标是能够输入一个像“hello,world,how,are,you,today”这样的字符串,并让程序将这个字符串分解成一个字符串数组,如“[hello,world,你今天好吗]... 但每当我编译此代码时,我得到此输出: “keywords = [Ljava.lang.String; @ 43ef9157” 任何人都可以建议一种方式,以我需要的方式输出数组?

3 个答案:

答案 0 :(得分:3)

不确定

System.out.println("keywords: " + Arrays.toString(keywords));

这不是导致问题的分裂(虽然它可能没有做你想要的) - 这是数组不会覆盖toString的事实。

答案 1 :(得分:0)

您可以尝试使用Java的String.Split

只需给它一个正则表达式,它将匹配你想要的一个(或多个)分界符,并将你的输出放到一个数组中。

对于输出,使用for循环或foreach外观来遍历数组的元素并打印它们。

你得到你现在得到的输出的原因是数组的ToString()方法不打印数组内容(就像在Python中那样)但是打印对象的类型及其地址。

答案 2 :(得分:0)

此代码应该有效:

String inputString = new String("hello, world, how, are, you, today");    
Scanner scn = new Scanner(inputString);
scn.useDelimiter(",");
ArrayList<String> words = new ArrayList<String>();
while (scn.hasNext()) {
   words.add(scn.next());
}

//To convert ArrayList to array
String[] keywords = new String[words.size()];
for (int i=0; i<words.size(); ++i) {
   keywords[i] = words.get(i);
}

useDelimiter函数使用逗号分隔单词。希望这有帮助!