2012-02-15 36 views
2

我该如何编写逻辑来连接所有后面用Java中的空格分隔的后面的单词? 例如String“a b c corporation”应该是“abc corporation”的结果。在Java中连接由空格分隔的单个字符?

+0

+ 1.第一眼看起来很容易,但事实并非如此。好问题。 – shift66 2012-02-15 06:59:07

+0

如果您使用它作为商业名称,则可能还需要考虑标点符号。例如'J.P.摩根','J. P. Morgan和J P Morgan都是写这个公司名称的常用方式,但他们都会以仅考虑空白的算法出现。 – gutch 2012-02-15 07:24:32

回答

3

给予指针 - 请编写自己!

  1. 在空间char上使用string.split []。
  2. 使用StringBuilder
  3. 环在从分裂

    3.1获得数组如果值是lenght 1的,附加到SB

    3.2如果该值> 1个lenght,具有附加SB中的空间。

+0

这是行不通的,因为从“a b cde f g”你会得到“abcde fg” – 2012-02-15 07:20:08

+1

你可能需要微调代码来在长度大于1的字符串前后添加空格。另外请注意,如果这样的字符串是最后一个元素,那么它之前的空间就足够了。祝一切顺利。 – Jayy 2012-02-15 07:24:37

+0

@PetarIvanov:是的,必须有一些微调。我只是想给OP一个想法,如果他照顾细节使其工作起来,那么对他来说是一个很好的学习! – Nrj 2012-02-15 09:53:20

2

您可以使用正则表达式与前瞻和回顾后替换:

String orig = "a b c corporation d e f"; 

    String replaced = orig.replaceAll("(?<=(^|)[a-zA-Z]) +(?=[a-zA-Z](|$))", ""); 
+0

为什么选择downvoted?它不起作用吗?你可以解释吗? – 2012-02-15 07:18:06

+0

这不能正常工作:'一家公司'变成'一家公司' - 第一个字母后面仍有空格。 – gutch 2012-02-15 07:18:20

+0

它将“a b c corporation d e f”的输出提供为“abc corporation def”它缺少一些东西。 – sjain 2012-02-15 07:21:11

相关问题