split()一个String到一个String数组,而不是在[0]得到一个空格

时间:2013-04-18 22:28:11

标签: java arrays string split whitespace

我正在尝试split()一个没有空格的String,但在[0]处得到一个空白。

String s = "..1..3..";
String[] result2 = s.split("");
System.out.println(result2[0]); // giving me a blank space

我意识到“”可能不是正确的,但无法找到替代方案。是否有可能拆分别的东西,或者在使用split()时这总是得到这个空格?

编辑解决方案:

     StringBuilder response = new StringBuilder();
     while((i = in.read()) != -1){     
            response.append((char)i);  
     }
     result = response.toString();   
     result = result.replace("\n", "").replace("\r", "");

4 个答案:

答案 0 :(得分:3)

  • 0包含从字符串开头到第一个点的数据(即空字符串)
  • 1包含第一个点
  • 2包含第二个点
  • 3包含字符串1
  • ...

答案 1 :(得分:3)

你的正则表达式在输入的每个位置分裂,包括第一个位置,它位于输入的开始 - 之前第一个字符。然后找到的第一个元素是输入开始和第一个字符之间的内容,当然是零长度字符串 - 空白。

但是,您不需要特殊代码来处理此问题。要将String中的每个字符都设为String[],您需要使用此正则表达式:

String[] chars = input.split("(?<=.)";

这个正则表达式是背后的,意味着“在每个角色之后”。

答案 2 :(得分:0)

您可以使用charAt()方法执行您所做的操作。

如果按照自己的方式执行此操作,则可能需要删除返回数组的第一个元素。一种方法是使用Arrays.copyOfRange()

String[] newArr = Arrays.copyOfRange(oldArr, 1, oldArr.length);

答案 3 :(得分:0)

为什么不只是String.toCharArray();然后将该数组转换为String[]如果你真的需要它是String []类型,否则char []看起来正是你想要做的,除了你不会在元素0和9中找到那些有趣的空字符串。