2014-02-10 76 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

相關問題