2012-03-10 4 views
-1

私はJavaソースファイルにアクセスする必要があります。先頭と末尾の空白を削除するには、Stringのメソッドtrim()を使用しています。しかし、いくつかのスコープのコードは:trim()を使用しているときに先頭の空白が削除されないのはなぜですか?

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

印刷ステートメントの空白は完全に削除されていません。これらの空白も削除できますか?

おかげ

EDIT:出力はまだこのように見えますが

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

+1

ステートメントにトリムはありません。あなたのコードを修正してください。 – Smamatti

+0

彼は彼が投稿したコードをトリムすると言っていると思います。 –

答えて

4

文字列の結果を割り当てる必要があります。 (文字列objectsは不変です)。

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

2番目のコードスニペットは空白で印刷されませんか? –

2

@Homeは、前述のように:

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

EDIT動作するはずです:を私はあなたが条件の前にトリムを使用することを推測します。私の間違い。

String newName = name.trim(); 

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

'name'が空白の先頭にある場合、' equals() 'メソッドはfalseを返します。 – someguy

+0

私は、愚かな私は、私の答えを更新知っている。 –

5

あなたは間違っています。 String.trim()メソッドは、は、先頭と末尾の白い形を完全に削除します。

しかし、あなたの本当の問題は、これが実際に何を意味するのかわからないことです。 Java文字列は不変なので、trim()は明らかにターゲットStringオブジェクトを変更しません。代わりに空白を削除した新しいStringインスタンスを返します。したがって、次のように使用する必要があります。

String trimmed = someString.trim(); 
関連する問題