相同的字符串不等于

时间:2017-04-18 16:15:49

标签: java string equals properties-file

我有以下部分代码,其中粒度值是块。当我比较这些值时,它总是显示NO。

   System.out.println(granularity);
   System.out.println(granularity.equalsIgnoreCase("block")?"YES":"NO");

   if(granularity.equalsIgnoreCase("BLOCK")){.....

以下是代码的输出:

block 
NO

粒度值从属性文件中获取为

granularity = prop.getProperty("Granularity");

以下是属性文件的快照:

.....Granularity = block
......

有人可以解释为什么这两个字符串不相等吗?

4 个答案:

答案 0 :(得分:4)

空白可能会使比较变得混乱。在开始时这样做:

granularity = granularity.trim();

答案 1 :(得分:2)

属性文件中的

属性的值在=

之后

所以这个:

Granularity = block

导致值" block"。将您的文件更改为:

Granularity=block

答案 2 :(得分:1)

  

以下是代码的输出:

     

块   NO

如果仔细检查输出,您会在字块后找到空格,因此它是decimal total; protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) { //check if the current row is a datarow or the footer row if (e.Row.RowType == DataControlRowType.DataRow) { //cast the row back to a datarowview DataRowView row = e.Row.DataItem as DataRowView; //add the column value to the totals total += Convert.ToDecimal(row["Test1"]); //or by column index total += Convert.ToDecimal(row[0]); } else if (e.Row.RowType == DataControlRowType.Footer) { //find a label in the footer with findcontrol Label label = e.Row.FindControl("Label1") as Label; //set the total value in the label label.Text = string.Format("{0:N2}", total); //set the footer value by cell index instead of a label e.Row.Cells[1].Text = string.Format("{0:N2}", total); } } @ p-j-meisch评论后编辑 您从输入中获得"block "。当您将其与" block"进行比较时,您会得到错误。

添加此行"block"

答案 3 :(得分:0)

最佳做法是每次在代码中trim字符串,特别是当它被用作用户的输入时。

granularity.trim().equalsIgnoreCase("block")...

或者将其存储在granularity

String granularity = someInputString.trim();