将StringBuilder拆分为Array Java后删除空字符串

Pet*_*kov 0 java arrays string split

对不起,如果已经问过这个问题,但我只能找到c#的结果.所以我有这个StringBuilder:

 StringBuilder sb = new StringBuilder(" 111     11 ");
Run Code Online (Sandbox Code Playgroud)

我想用这个方法将它拆分成一个数组:

String[] ar = sb.toString().split(" ");
Run Code Online (Sandbox Code Playgroud)

正如预期的那样,结果数组有一些空条目.我的问题是,当我拆分StringBuilder时,我是否可以直接删除这些空格,或者之后我必须这样做.

rzw*_*oot 6

split需要一个正则表达式.所以:

String[] ar = sb.toString().split("\\s+");
Run Code Online (Sandbox Code Playgroud)

字符串\\s是'任何空格'的regexp-ese,而+是:1或更多.如果你只想在空格上拆分(而不是在换行符,制表符等),请尝试:String[] ar = sb.toString().split(" +");字面意思是:"拆分在一个或多个空格上".

这个技巧适用于任何分隔符.例如,用逗号分隔?尝试:.split("\\s*,\\s*"),即:0或更多的空格,逗号,后跟0或更多的空格(和正则表达式尽可能多).

请注意,此技巧不会消除前导和尾随空格.但要做到这一点,使用修剪.把它们放在一起:

String[] ar = sb.toString().trim().split("\\s+");
Run Code Online (Sandbox Code Playgroud)

并为逗号:

String[] ar = sb.toString().trim().split("\\s*,\\s*");
Run Code Online (Sandbox Code Playgroud)