我的文件包含以下几行:
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);
}
如果您不理解我的问题,请回复我。 请不要沮丧和投票,我将来可能会失去再次提问的机会。
答案 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方法返回一个空字符串(“”),则忽略该行。