如何在等号(=)后删除包含多个空格的行?

时间:2014-06-11 13:28:05

标签: java string substring

我的文件包含以下几行:

z1D_PreviousAssignedCompany(303760000)= GOIS

Previous_HPD_CI_ReconID(303524300)=

Previous_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

我在等号后面找到包含一些数据的行,忽略等号后没有任何值的行,如:

去的话

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);
}

如果您不理解我的问题,请回复我。 请不要沮丧和投票,我将来可能会失去再次提问的机会。

4 个答案:

答案 0 :(得分:2)

为什么不使用正则表达式?

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

会在group(1)中为您提供非空字符串。

或者您可以使用replaceAll

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

此处检查part,它可能是empty或您需要的值。

注意,您应该修复代码中的错误:

我刚看到你的代码:

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

string.replace(target,repl)不会认为target是正则表达式!!它做 literal 替换。如果您在项目中以相同的方式使用此方法,则应该修复它。

更新,以防您只需要检查是否需要删除一行:

然后只需检查这个正则表达式的行:

"=.*\\S.*$"

这不会为您提取值,但它会告诉您是否有=符号,以及=后是否有值(非空字符串)。

答案 1 :(得分:1)

您已经在&#34; =&#34;之后获得了数据。签好

所以只需添加

if(!strword.trim()。equals(&#34;&#34;))

在sop之前

你有你想要的东西

希望这有帮助

答案 2 :(得分:1)

在您的线路上使用String trim(),然后您可以检查=符号是否是修剪线上的最后一个字符,如果它是删除它。

答案 3 :(得分:0)

分割String的另一种方法是使用String split方法。

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

如果getValue方法返回一个空字符串(“”),则忽略该行。