在奇数位置的列表元素之间添加空格

时间:2017-09-20 13:39:11

标签: java

我有一个字符串:

str = "Hello there"

我正在移除空白:

String[] parts = str.split("\\s+");

创建一个列表并用部分填充它:

List<String> theParts = new ArrayList<String>();
      for (int i = 0; i < parts.length; i++) {
        theParts.add(parts[i]);
      }

List的大小是2.现在,我想增加它的大小,以便与另一个列表的大小相同。

假设另一个列表的大小为3。 所以,我查一下:

if (otherList.size() > theParts.size()) {

然后,我想更改theParts列表,以便在它的各个部分之间包含一个空格(显示另一个列表有多大的数字)。

所以,我希望theParts成为(在每个奇数位置添加一个空格):

theParts[0] = "Hello"
theParts[1] = " "
theParts[2] = "there"

我不确定列表是否会发生这种情况,但我想不出另一种解决方案。

或使用类似连接的东西(不起作用,只是想使用这样的东西):

if (otherList.size() > theParts.size()) {
    for (int i = 0; i < otherList.size(); i++) {
      if (i%2 !=0) {
        String.join(" ", theParts);
      }
    }
  }  

3 个答案:

答案 0 :(得分:1)

只需在填充列表时插入空格:

List<String> theParts = new ArrayList<>(2 * parts.length - 1);
for (int i = 0; i < parts.length; i++) {
  if (i > 0) theParts.add(" ");
  theParts.add(parts[i]);
}

答案 1 :(得分:1)

您可以使用word break正则表达式:

public void test() throws Exception {
    String str = "Hello there";
    List<String> strings = Arrays.asList(str.split("\\b"));
    for ( String s : strings ) {
        System.out.println("'"+s+"'");
    }
}

这将保留所有空间。

  

'你好'

     

''

     

'有'

答案 2 :(得分:-1)

for(String dis : theParts){
          newParts.add(dis);//'newPart is another list '
          String last = parts[parts.length -2];  // until new list read last element
          if(!last.equals(dis)){ 
              newParts.add(" "); 
          }if(last.equals(dis)){
              newParts.add(" "); 
          }
      }