2

I'm trying to split() a String with no whitespaces, but getting a blank at [0].

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

I'v realized that "" might not be the right one, but cant find a alternative. Is it possible to split on something else, or will I always get this whitespace when using split() this way?

EDIT SOLUTION:

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

4 回答 4

3
  • 0包含从字符串开头到第一个点的数据(即空字符串)
  • 1包含第一个点
  • 2包含第二个点
  • 3包含字符串1
  • ...
于 2013-04-18T22:31:52.360 回答
3

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

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

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

这个正则表达式是后面的意思,意思是“在每个字符之后”。

于 2013-04-18T22:40:53.867 回答
0

您可以使用该charAt()方法做您所做的事情。

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

String[] newArr = Arrays.copyOfRange(oldArr, 1, oldArr.length);
于 2013-04-18T22:31:51.970 回答
0

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

于 2013-04-18T22:40:02.927 回答