Java - 一次性拆分和修剪

YCF*_*F_L 39 java string split

我有一个像这样的字符串:String attributes = " foo boo, faa baa, fii bii,"我想得到这样的结果:

String[] result = {"foo boo", "faa baa", "fii bii"};
Run Code Online (Sandbox Code Playgroud)

所以我的问题是如何在一次拍摄中进行分割和修剪我已经拆分:

String[] result = attributes.split(",");
Run Code Online (Sandbox Code Playgroud)

spaces仍然在结果中:

String[] result = {" foo boo", " faa baa", " fii bii"};
                    ^           ^           ^
Run Code Online (Sandbox Code Playgroud)

我知道我们可以制作一个循环并trim为每个人制作,但我想在镜头中制作它.

Ram*_*asi 65

使用正则表达式\s*,\s*进行拆分.

String result[] = attributes.split("\\s*,\\s*");
Run Code Online (Sandbox Code Playgroud)

对于初始和尾随空格
以前的解决方案仍然留下初始和尾随空格.因此,如果我们期待它们中的任何一个,那么我们可以使用以下解决方案来删除它们:

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

  • 好吧,我想这与您无需编写自己的解析器即可获得的一样接近。而且它只有 1 个修剪而不是 n 个修剪...... (2认同)

And*_*lar 31

使用java 8,你可以在一行中这样做

String[] result = Arrays.stream(attributes.split(",")).map(String::trim).toArray(String[]::new);
Run Code Online (Sandbox Code Playgroud)

  • 这不是一枪!我猜你只是在一行中写 for 循环 (6认同)
  • @SASIKUMARS取决于你对"一枪"的定义.如果等于"一行",那就完全可以了. (2认同)
  • @SASIKUMARS 我不同意。我也将其解释为“一步**一步**”,但这并不意味着其他解释无效。 (2认同)