2013-02-19 71 views
0

我有一个字符串'123'(是的,它是我的程序中的一个字符串)。任何人都可以解释,当我用这个方法:java split()方法

String[] str1Array = str2.split(" "); 

为什么我str1Array[0]='123'而非str1Array[0]=1

+5

简单的问题。淹没答案:P – LGAP 2013-02-19 11:26:18

+1

每个人都想要蛋糕上的樱桃:P – SudoRahul 2013-02-19 11:26:52

+0

如果下面的答案都不起作用,那么您的程序中可能有一个不是“123”的字符串。在这里和那里你可能会忽略一些空间。 – Sanchit 2013-02-19 11:42:54

回答

3

str2不包含任何空格,因此split拷贝str2的全部内容的str1Array第一索引。

你必须做的:

String str2 = "1 2 3"; 
String[] str1Array = str2.split(" "); 

另外,为了找到在str2中的每一个字符,你可以这样做:

for (char ch : str2.toCharArray()){ 
    System.out.println(ch); 
} 

你也可以把它分配给在循环数组。

+0

谢谢,它的效果太好 – Leo 2013-02-19 11:52:13

+1

是的,好吧。谢谢提醒我) – Leo 2013-03-25 10:23:05

1

因为您的String中没有空格。 如果你想单字符,尝试char[] characters = str2.toCharArray()

1

简单......你试图通过空间和您的字符串分割字符串“123”,没有空间

+0

你知道,String [] str1Array = str2.split(“”);它也行不通( – Leo 2013-02-19 11:26:29

3
str2.split("") ; 

试试这个:拆分各字符串中的字符。 输出:

[, 1, 2, 3] 

但它会返回一个空的第一个值。

str2.split("(?!^)"); 

输出:

[1, 2, 3] 
+0

没有效果 – Leo 2013-02-19 11:27:35

+1

@Leo这将给你几乎你所要求的。它会产生数组'''',“1”,“2”,“3”}' – Alderath 2013-02-19 11:33:55

+0

@Leo看到我的回答我认为第二个就是你想要的 – 2013-02-19 11:47:09

2

传递给split()的正则表达式应该在字符串中有一个匹配项,以便它将在字符串中找到匹配项的位置拆分字符串。这里你传递的是“123”中找不到的“”,因此没有发生分裂。

1

这是因为split()方法字面上根据作为参数给出的字符分割字符串。

我们每次找到拆分字符都会删除拆分字符并形成一个新的字符串。

String[] strs = "123".split(" "); 

的字符串"123"不具有字符" "(空间),因此不能被分开。所以返回只是数组中的单个项目 - { "123" }

1

做了 “拆分” 你必须使用一个分隔符,在这种情况下,插入一个 “” 每个号码之间

public static void main(String[] args) { 
    String[] list = "123456".replaceAll("(\\d)", ",$1").substring(1) 
      .split(","); 
    for (String string : list) { 
     System.out.println(string); 
    } 
} 
0

试试这个:

字符串str = “123”; String res = str。分裂(””);

将返回以下结果:

1,2,3

相关问题