2012-03-10 26 views
-1

我需要訪問java源文件,我使用String的方法trim()來刪除任何前導和尾隨空格。但是,代碼是一些範圍,例如:爲什麼在使用trim()時不會刪除主要的空格?

if(name.equals("joe")){ 
    System.out.println(name); 
} 

打印語句的空格未被完全刪除。有沒有辦法能夠刪除這些白色空間嗎?

感謝

編輯:我沒有使用一個新的變量:

String n = statements.get(i).toString().trim(); 
      System.out.println(n); 

但輸出仍然是這樣的:

System.out.println("NAME:" + m.getName()); 
BlockStmt bs = m.getBody(); 
List<Statement> statements = bs.getStmts(); 
for (int i = 0; i < statements.size(); i++) { 
    if ((statements.get(i).toString().trim().contains(needed)) & (statements.get(i).toString().trim().length() == needed.length())) { 
     System.out.println("HEREEEEEEEEEEEEEEEEEEEEEEEEEE"); 
    } 
} 

是一些字符串仍包含空格事先

+2

你不顯示包含'trim'的代碼。記住這個方法返回一個新的String實例,你需要像'name = name.trim()'這樣的東西。它刪除前導空白和尾隨空白:http://docs.oracle.com/javase/6/docs/api/java/lang/String.html#trim() – home 2012-03-10 13:30:06

+1

您的聲明中沒有修剪。請修復你的代碼。 – Smamatti 2012-03-10 13:30:26

+0

我想他是說如果他調用他發佈的代碼的修剪。 – 2012-03-10 13:31:43

回答

4

您必須分配字符串的結果。 (字符串objects是不可變的)。

name=name.trim(); 
if(name.equals("joe")){ 
    System.out.println(name); 
} 
+1

第二個代碼段不會用空格打印嗎? – 2012-03-10 13:36:15

2

由於@Home提到:

if(name.equals("joe")){ 
     String newName = name.trim(); 
     System.out.println(newName); 
} 

應工作

編輯:我想你想的條件前使用裝飾。我的錯。

String newName = name.trim(); 

if(newName.equals("joe")){ 
     System.out.println(newName); 
} 
+0

當'name'具有前導空白時,'equals()'方法將返回false。 – someguy 2012-03-10 13:33:38

+0

我知道,愚蠢的我,更新了我的答案。 – 2012-03-10 13:35:07

5

你錯了。 String.trim()方法確實完全刪除前導和尾隨白色。

但是,我懷疑你真正的問題是你不知道這是什麼意思。 Java字符串是不可變的,所以trim()顯然不會修改目標String對象。相反,它會返回一個新的String實例,並刪除空白。所以你需要如下使用它:

String trimmed = someString.trim(); 
相關問題