こんばんは、今回はtrim()メソッドの使用方法とキャストの方法についてお伺い致します。
trimメソッドを使用して文字列の前後の空白を削除したいのですが、
通常
String str = " 「こんにちは」";
str = str.trim();
とコーディングしコンパイルして表示するとちゃんと「こんにちは」となるのすですが、これが
ArrayList list = new ArrayList();
BufferedReader br=
new BufferedReader(new FileReader(Test.txt);
while((str = br.readLine()) !=null){
str = str.trim();
list.add(str);
}
br.close();
とコーディングしコンパイルは通るのですが、 「こんにちは」のままで"「"の前にある空白が削除されてません。
私なりに「型」の違いでが原因ではないかと思い、java.io.ArrayList型からjava.lang.String型へキャストしようとしているのですが、コンパイルエラーが出てしまします。
プログラムコードは
ArrayList list = new ArrayList();
String s;
s = (String)list;
としています。
エラー内容は
ScheduleControlCall.java:142: 変換できない型
出現: java.util.ArrayList
要求: java.lang.String
s = (String)list;
^
エラー 1 個
となっています。
度々ですが、ご指導お願い致します。
No.2ベストアンサー
- 回答日時:
この場合RandomAccessFileは関係ないので、置いておきましょう。
ただ気になる点は>String s = (String)list.get(2);
>while((s = raf.readLine()) !=null){
これだと、get()で取得したStringが、使われないままreadLine()で上書きされてしまいます。
>String str = " 「こんにちは」";
>str = str.trim();
>System.out.println(str);
strはファイルから読み込むのではないのですか?
とりあえず、「System.out.println(str);」を元のコードの「str = str.trim();」の直後に入れてみれください。空白が除去されているはずです。
No.1
- 回答日時:
> 「こんにちは」のままで"「"の前にある空白が削除されてません。
それはどうやって確かめたのですか。結果を表示するコードがないようですが。
ArrayListから値を取り出すには、たとえば次のようにキャストします。
(String)list.get(0)
ここでget(n)はn番目(0=先頭)の要素を取り出すメソッドです。get()の返値はObject型なので、元の型(この場合はString)へのキャストが必要です。
また、trim()で空白が除去されないとしたら、その空白が全角になってはいませんか。
この回答への補足
amajun様早速のご回答有難う御座いました。
>それはどうやって確かめたのですか。結果を表示するコードがないようですが。
String str = " 「こんにちは」";
str = str.trim();
System.out.println(str);
のように結果を表示しております。
>また、trim()で空白が除去されないとしたら、その空白が全角になってはいませんか。
確認しましたが、半角の空白でした。
ArrayListからの読み込みの仕方はこんな感じで宜しいのでしょうか。
BufferedReader br = new BufferedReader(new FileReader(Test.txt));
while((str = br.readLine()) !=null){
str = str.trim();
list.add(str);
・・・・
RandomAccessFile raf = new RandomAccessFile(Test.txt,"rw");
raf.seek(2);
String s = (String)list.get(2);
while((s = raf.readLine()) !=null){
System.out.println(s);
}
Test.txt内には
「こんにちは」
「お早う」
「おやすみ」
の内容が入っています。
ここのプログラムでは初めにTest.txtの内容を読み込みlist(ArrayListオブジェクト)に格納する前にtrimメソッドを使用して要素の前後にある空白を取り除き、格納されている内容を2つ目の要素(この場合は「お早う」と「おやすみ」のみ)から書き出すのを目的としています。
お手数ですが、宜しくお願い致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「タイプ初期化子が例外をスロ...
-
Timestamp型への変換について(J...
-
文字列からダブルクオートの削除
-
VB.NETで16進数が正しいかどう...
-
String型の日付(2005/11/25)の...
-
時間の取得
-
VBA Evaluate関数 型が一致しま...
-
タトゥーや墨を入れる人の共通点
-
C# UriFormatExceptionの回避
-
CreateEventについて
-
全角スペースのチェックについて
-
HashMapについて
-
変数名の付け方
-
エクセルVBAで、条件に一致する...
-
インスタンス参照でアクセスで...
-
private static という変数の修飾
-
パワーポイントのVBAでテキスト...
-
「インスタンス」の意味をわか...
-
mainメソッドのthrows節で設定...
-
複数の変数を宣言する時、同時...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「タイプ初期化子が例外をスロ...
-
0除算の例外処理ができない!!...
-
文字列からダブルクオートの削除
-
VB.Net Object型 空かどうか
-
連続する「\\」をひとつの「\\...
-
時間の取得
-
【JAVA】与えられた金額を貨幣...
-
VBA Evaluate関数 型が一致しま...
-
Timestamp型への変換について(J...
-
VB.NETで16進数が正しいかどう...
-
nullで、return出来るのはどん...
-
String型の日付(2005/11/25)の...
-
全角スペースのチェックについて
-
C#の捕捉されない例外処理の対...
-
C# マルチスレッドにおける例外...
-
Excelでのエラー
-
Bean→JSPでの文字化け
-
Javaで文字列をゼロ埋め(ゼロパ...
-
例外ってIf文の中に入れますか...
-
タトゥーや墨を入れる人の共通点
おすすめ情報