Метод Split создает пустые элементы в массиве Java - PullRequest
0 голосов
/ 24 сентября 2019

У меня есть следующая строка "Make Me A SandWich" Кто-то решил троллить меня и заменить пробелы случайным числом 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");
    }
}

. Я считаю, что проблема решена, если кто-то скажет мне, чему равен массив [1].Знание значения даст мне что-то для сравнения при копировании элементов в новый массив.

Ответы [ 4 ]

1 голос
/ 24 сентября 2019

При сравнении двух строк в Java вы не можете использовать оператор ==, который сравнивает ссылки на объекты.Вам нужно использовать array[1].equals("")

Также, если вы просто хотите заменить все вхождения строки, вы можете выполнить следующие действия:

trollText.replaceAll("LOL", " ")

0 голосов
/ 24 сентября 2019

Мы должны использовать метод 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);
}

}

0 голосов
/ 24 сентября 2019

Вот мое решение.пропустите 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());
    }
}

Happy Coding ...

0 голосов
/ 24 сентября 2019

Для сравнения строк в Java, используйте

String.equals("text");

, это вернет true , если строки идентичны, и false , если нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...