Как удалить строку, содержащую несколько пробелов после знака равенства (=)?

125
14

Мой файл содержит следующие строки:

z1D_PreviousAssignedCompany (303760000) = GOIS

Предыдущий_HPD_CI_ReconID (303524300) =

Предыдущий_ServiceCI_ReconID (303524200) =

z1D_TotalOpenIncidentsCount (303070300) = 0

z1D_Assignee_Site (303903600) = Бангалор - IND08

z1D_Assignee_Phone (303903500) = N/A

z1D_Assignee_Email (303903400) = taranveer.vij@in.com

Я ищу строки, содержащие некоторые данные после знака равенства, игнорируя те, которые не имеют значения после знака равенства, например:

Gois

0

Бангалор - IND08

N/A

taranveer.vij@in.com

Вот что я пробовал:

if (strword.contains("="))
{

int num1=strword.indexOf("=");

int num2=strword.lastIndexOf("");

String strNew=strword.substring(num1,num2);

String removeSpaces=strNew.replace("\\s+","");

System.out.println(removeSpaces);
}

Пожалуйста, верните меня, если вы не поняли мой вопрос. Пожалуйста, не расстраивайтесь и голосуйте, я могу потерять шанс снова задать вопрос в будущем.

спросил(а) 2021-01-25T20:26:15+03:00 4 месяца, 4 недели назад
1
Решение
77

почему бы не использовать регулярное выражение?

"(?<==)\\s*(\\S.*)"

даст вам эти непустые строки в group(1).

или вы можете сделать с replaceAll:

String part=line.replaceAll(".*=\\s*","");

здесь проверьте part, она будет либо empty либо нужной вам.

ПРИМЕЧАНИЕ. Вы должны исправить ошибку в своем коде:

Я просто видел это в вашем коде:

String removeSpaces=strNew.replace("\\s+","");

string.replace(target, repl) не будет считаться target как regex !! он выполняет буквальную замену. Вы должны исправить это, если бы вы использовали этот метод таким же образом в своем проекте.

Обновление, если вам просто нужно проверить, нужно ли удалить строку:

то просто проверьте строку с этим регулярным выражением:

"=.*\\S.*$"

это не будет извлекать значения для вас, но он скажет вам, есть ли = строка в строке и если есть значение (непустые строки) после =.

ответил(а) 2021-01-25T20:26:15+03:00 4 месяца, 4 недели назад
64

Используйте String trim() на вашей линии, а затем вы можете проверить, является ли знак = последним символом на вашей обрезанной строке, если он удаляет его.

ответил(а) 2021-01-25T20:26:15+03:00 4 месяца, 4 недели назад
63

Вы уже получаете данные после того, как знак "="

так что просто добавьте

if (! strword.trim(). equals (""))

прежде, чем соп, и у вас есть то, что вы ищете

надеюсь, что это помогло

ответил(а) 2021-01-25T20:26:15+03:00 4 месяца, 4 недели назад
44

Другим способом разделения String является использование метода разделения строк.

public String getValue(String line) {
String[] values = line.split(" =");
if (values.length == 1) {
return "";
} else {
return values[1].trim();
}
}

Если метод getValue возвращает пустую строку (""), игнорируйте строку.

ответил(а) 2021-01-25T20:26:15+03:00 4 месяца, 4 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема