- - PR -
文字列
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2003-01-20 18:25
初心者ですみません
文字列で test='aaaaa,bbbb,ccc' のようなものがあったとします。 この文字列を'aaaaabbbbccc'のようにカンマをトリムする 方法はどうやればよいでしょうか? replaceで test = test.replace(',',''); としたら、下記のエラーが出てしまいます。 対処方法ご教授ください。 Incompatible type for method. Can't convert java.lang.String to char. test = test.replace(',',''); | ||||||||||||
|
投稿日時: 2003-01-20 18:58
置換後のパラメタが、文字リテラルになっていないような… charの場合、\u0〜からが有効な文字リテラルじゃなかったでしょうか? (言語仕様が今手元にないので調べていませんが…) 代替方法は、J2SDK 1.4以降でしたら、java.lang.String#replaceAllを使うとか…。 それよりも前のバージョンの場合は、自作…かな? # ちなみに私はJDK 1.1.xの時に作ったコードを使ってる自作派(^^; _________________ -- parolibre | ||||||||||||
|
投稿日時: 2003-01-20 19:35
>char test = test.replace(',','');
(誤)String test = test.replace(',',''); が正解。エラーメッセージに答えがまんま出てるよ。 Stringはcharに暗黙の型変換では変換できないって...。 #「''」って文字リテラルではないとのツッコミがあったので。 (誤)String test = test.replaceAll(",","aaaaa,bbbb,ccc"); (正)String test2 = test.replaceAll(",",""); でも可。 まぁ、 (誤)char[] test = test.replaceAll(",","aaaaa,bbbb,ccc"),toCharArray(); (正)char[] test2 = test.replaceAll(",",""),toCharArray(); って手もあるな。 #"aaaaa,bbbb,ccc"はあまり深く考えずに書いていました(^^;。 つ〜か、Java (TM) 2 SDK ドキュメント v1.4.0 くらい きちんと読もう。 [ メッセージ編集済み 編集者: asip 編集日時 2003-01-23 15:41 ] | ||||||||||||
|
投稿日時: 2003-01-21 10:11
ちょっと横やり。つーか、揚げ足取り。
皆さんプログラミングの初心者を必ず経験するわけですけど、 初心者にとって言語のマニュアルなんてものはちんぷんかんぷんで訳わからんもんです。 エラーメッセージの意味を調べてもなんのことやら??? ということも結構多いですよ。 例のエラーも文字のリプレイスと型変換に相関関係があるのか?とか勘違いする可能性大だし。 (注意深く見ればわかることですが) 長々と書きましたが、要は初心者にマニュアルを読めって言うのは 何のアドバイスにもならないよ〜、と言いたいだけです。 | ||||||||||||
|
投稿日時: 2003-01-21 10:36
Java 2 プラットフォーム API 仕様 の中に
public String replace(char oldChar, char newChar) と返値がString型であることが明記されています。 マニュアルを見れば、すぐにわかるようなことを質問するのは 怠慢としか思えません。「こいつ、マニュアルも見てないのか? 参考書、読んだのか?Java勉強する気あるのか?」と思います。 初心者だからといってわからないことがあると何でもすぐ他人に 質問するようでは...さきが見えています。 初心者には最初にJAVAの参考書を一冊、隅から隅まで熟読することを勧めます。 JAVAは前提となる基礎知識なしにプログラムを書けるような お手軽言語ではありません。 エラーメッセージが英語で...というのであれば辞書ぐらい引きましょう。 | ||||||||||||
|
投稿日時: 2003-01-21 11:58
読書百遍義自ずから見る…と古人は言ってます。私もそれを信じています。 多くの場合において、回答を寄せる側は、膨大な量の資料の中でどのあたりを読めばよいのかポイントを指し示していることが多いのですから、 そこを一度や二度読んだだけで「理解できない」と音を上げるのは怠慢以外の何者でもないでしょう。 100回も読めば「ココまでは理解できたが、ココは理解ができない。自分はこう思うのだが…」と、 普通の会話(≠技術者同士)が成立するようになるように思えるのですが、如何でしょう? _________________ -- parolibre | ||||||||||||
|
投稿日時: 2003-01-21 12:44
揚げ足取りかもしれませんが、DORAEMONさんが混乱しないように...
testが重複宣言なのと、第2引数が有効なcharではありませんので、残念ながら 期待通りの処理はreplaceではできないと思います。 長さゼロの文字(列?)を意味するchar型データは、表現できないのではと。 (派手にコンパイラに怒られました)
も、エライ結果を返してくれます。 test = test.replaceAll(",", ""); であれば、お望みの結果が得られると思います。 ただ...DORAEMONさんがどんなプログラムを書いたのか、すごく気にはなります けど。
と書かれていますが、手元では、コンパイルエラーで
が出まして... java version "1.4.1_01" ですケド(関係あるのかな?) | ||||||||||||
|
投稿日時: 2003-01-21 15:59
私の場合は正規表現を使っています。
jakarta の ORO ライブラリです。 (JDK 1.4から正規表現が使えるようになりましたが、私のところは JDK 1.3が主流なので こっちは使っていません。) import org.apache.oro.text.perl.Perl5Util; ... Perl5Util perl = new Perl5Util(); String inStr = "aaaa,bbbb,cccc"; String outStr = perl.substitute("s/,//g", inStr); みたいな感じです。 jakarta のOROのライブラリはダウンロードしてください。 http://jakarta.apache.org/oro/ |