【问题标题】:Split method creates empty elements in Java ArraySplit 方法在 Java Array 中创建空元素
【发布时间】:2020-01-24 12:23:23
【问题描述】:

我有以下字符串“让我成为三明治” 有人决定拖钓我并用随机数量的 LOL 替换空格。 所以现在字符串是“LOLMakeLOLLOLLOLMELOLALOLSandWich”

我的目标是恢复此更改。

我尝试使用 split 方法创建一个字符串数组,但这会导致数组内部的“空”元素具有一个值,但是当我尝试记录它时,它没有显示任何内容。也不等于""

Public class MyClass{

public static void main(String[] args) {
        String trollText = "MakeLOLLOLLOLMELOLALOLSandWich";

        String[] array = trollText.split("LOL");

        if (array[1]=="")System.out.print("it's an empty string");
        if (array[1]==" ")System.out.print("it's a space sign");
        if (array[1]==null)System.out.print("it's equal to nothing");
        if (array[1]==' '+"")System.out.print("I don't know what's that");
        else System.out.print(array[1]+"<-- This is an element and it has a value");
    }
}

如果有人告诉我 array[1] 等于什么,我认为问题解决了。 在将元素复制到新数组时,知道值会给我一些比较的东西。

【问题讨论】:

  • 如果原始字符串包含 LOL 怎么办?
  • 问题是:为什么?为什么不简单地使用replace() 方法?
  • @user1474111 我们可以假设它不包含 LOL。
  • @Amongalen 这会给我留下重复的空格,这仍然不是我要寻找的答案。

标签: java arrays string


【解决方案1】:

在java中比较两个字符串时,不能使用==运算符来比较对象引用。你需要使用array[1].equals("")

另外,如果您只是想替换所有出现的字符串,您可以执行以下操作

trollText.replaceAll("LOL", " ")

【讨论】:

    【解决方案2】:

    这是我的解决方案。跳过empty" " 字符串并将notEmpty values 附加到new StringBuilder(),最后打印出来。

    import java.util.Arrays;
    
    public class LOL_problem {
    
    public static void main(String[] args) {
            String trollText = "MakeLOLLOLLOLMELOLALOLSandWich";
            StringBuilder sb = new StringBuilder();
            String[] array = trollText.split("LOL");
            //System.out.println(Arrays.toString(array));
    
            for (String str : array) {
                if (!str.equals("")) sb.append(str+" ");
            }
            System.out.println(sb.toString().trim());
        }
    }
    

    【讨论】:

      【解决方案3】:

      我们应该使用 equals(String str) 方法来检查字符串是否相等,而不是使用 '==' 来检查对象引用。 要替换所有出现,您可以使用 trollText.replaceAll 方法,如下所示。

          public class MyClass{
            public static void main(String[] args) {
              String trollText = "MakeLOLLOLLOLMELOLALOLSandWich";
              String result  = trollText.replaceAll("LOL", " ");
              System.out.println(result);
          }
      }
      

      【讨论】:

        【解决方案4】:

        要比较 Java 中的字符串,请使用:

        String.equals("text");
        

        如果字符串相同则返回true,否则返回false

        【讨论】:

          猜你喜欢
          • 2015-12-17
          • 2017-06-15
          • 1970-01-01
          • 1970-01-01
          • 2021-12-21
          • 2022-01-16
          • 2015-12-23
          • 2022-12-11
          • 2012-05-08
          相关资源
          最近更新 更多