2014-02-10 34 views
0

我正在使用eclipse和java 我想比较两个字符串,删除它们之间的所有空间。字符串比较函数等于没有给出正确的结果

这是我的代码

首先我删除字符串中的空白。

System.out.println("["+StringUtils.deleteWhitespace(s4)+"]"); 
System.out.println("["+StringUtils.deleteWhitespace(s3)+"]"); 

// comparing Strings 
if(s4.equals(s3)) 
{ 
    System.out.println("Text Match");'  
} 

下面是从线1和2的输出是Eclipse控制台上显示:

[gnarlyadj.Somethingthatisgnarlyhasmanyknotsandbumpyareasonitssurface.nudosoadj.Algonudosotienemuchosnudosyunasuperficiellenadebultos.] 
[gnarlyadj.Somethingthatisgnarlyhasmanyknotsandbumpyareasonitssurface.nudosoadj.Algonudosotienemuchosnudosyunasuperficiellenadebultos.] 

从我所看到的,在两个字符串之间没有差别但它显示的字符串作为不匹配。

+2

Java中的字符串*是不可变的*。任何涉及“更改”字符串的操作都不会。它返回一个新的'String' –

回答

12

您没有将deleteWhitespace()操作的结果分配给任何东西。因此你的两个字符串将保持不变。

商店的结果,像这样的,在打印之前:

s4 = StringUtils.deleteWhitespace(s4);

+0

这样做后,我再次执行该程序,它仍然显示一些空格。例如,看看这个输出 - 提醒你。当你确定,你记得去体验一些事情时,你可能会遇到一些事情。你可以去看看这些事情,回答你的问题。在这里你可以看到单个空间仍然在第二行第二个单词中显示befroe“v”。我不明白为什么这个空间仍然显示。 – user3270693

+0

@ user3270693没有看到更多的代码,我不知道发生了什么。如果您发布更多代码,请在此留言,以便我知道回来看看。不要发布你的所有代码 - 我们只需要相关的代码。 – Rainbolt

1

的方法StringUtils.deleteWhitespace(S4)不改变由S4(Strings are immutable)引用的字符串,但返回一个新字符串。

如果你这样做了下面的代码:

s3 = StringUtils.deleteWhitespace(s3); 
s4 = StringUtils.deleteWhitespace(s4); 

if (s4.equals(s3)) { 
    System.out.println("Text Match");'  
} 

然后你会看到这两个字符串是真正平等的,印在“文本匹配”。

+0

它不打印文字匹配。当我这样做时,我再次执行该程序,它仍然显示一些空格。例如,看看这个输出结果 - 提醒你。当你有微笑时,你记得去体验一些事情.rememorar v.Cuand orememoras,recuerdasexperienciasosucesospasados。在这里你可以看到单个空间仍然在第二行第二个单词中显示befroe“v”。我不明白为什么这个空间仍然显示。 – user3270693

+0

您在删除空格后是否正在打印字符串?

 String s3 = "String With Spaces"; s3 = StringUtils.deleteWhitespace(); System.out.println(s3); 
此代码应删除字符串中的所有空格。 要检查的其他东西,它是什么StringUtils? 我认为这是org.apache.commons.lang.StringUtils的库方法。我对么? 如果没有,那么你必须检查StringUtils实现是否真正起作用。 –

+0

yes是在org.apache.commons.lang.StringUtils中。我将它用于我的字符串并将其打印出来,在那里我仍然可以看到空间。 – user3270693

相关问题