urizakaです。

 さて、現在データベースから検索して持ってきたデータ(住所データです)をString変数に代入し、そのデータを一定ルールで区切って、区切った間に改行コードを入れるという処理を考えているのですが、javaにはVBAのsplit関数みたいなものってあるのでしょうか?JavaScriptにはあるみたいなので、Javaにもあるのではないかとは思うのですが…

このQ&Aに関連する最新のQ&A

A 回答 (4件)

 java.util.StringTokenizer というクラスがあります。

用法は参考URLをごらんください。

 ちなみにJavaとJavaScriptは名前が似ているだけでまったくの別物とお考えください。(私は逆にVBAはまったくわかりませんが…)

参考URL:http://java.sun.com/j2se/1.3/ja/docs/ja/api/java …
    • good
    • 0
この回答へのお礼

urizakaです
返事が遅れて申し訳ありません。
おかげでできました。
ありがとうございました。

お礼日時:2001/12/05 10:47

みなさんのおっしゃるとおり、StringTokenizerが最適だと思います。



別の方法としては、StringのサブクラスでStringBufferがあります。
Stringをいろいろいじるのならけっこう便利なクラスです。
    • good
    • 0
この回答へのお礼

urizakaです
返事が遅れて申し訳ありません。
おかげで出来ました。
ありがとうございました。

お礼日時:2001/12/05 10:25

java.util.StringTokenizerを使う方法以外として


jakartaのORO(正規表現ライブラリ)を使う方法があります。

JavaWorld 2001年4月号,8月号に特集されていました。

文字列の分割,置換,パターンマッチングなどを
行うことができます。

参考URL:http://jakarta.apache.org/oro/index.html
    • good
    • 0
この回答へのお礼

urizakaです
返事が遅れて申し訳ありません。
おかげで出来ました。
ありがとうございました。

お礼日時:2001/12/05 10:24

splitみたいなのはないと思いますよ。


いちいちループ作って、indexOfか何かで検索して、
substringする感じじゃないでしょうか?

私が知らないだけかな?

Perlみたいに、正規表現とかも使えると便利なんですけどね...
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

QJAVAの質問です。 ( String args[] )それとも(String[] args) ?

MAINのこの引数ですが、
どちらが正しいのでしょうか?

また、そもそも この[]はなぜ必要なのでしょうか?
配列を意味していますか?

Aベストアンサー

mainに関してだけは (String[] args) が正しい・・・と思いましたが
( String args[] ) でコンパイルも実行も両方通ったのでどちらも正しいようです

配列を意味しています
例えば
String[] hai={"どちらも","正しい","とは","知らなかった"};
String hai[]={"どちらも","正しい","とは","知らなかった"};
ではどちらも配列を宣言した上でhai[0],hai[1],hai[2],hai[3]に文字列を代入しています。

String[] hai=new String[3];
String hai[]=new String[3];
で配列領域を確保してから
hai[0]="どちらも正しい";
のように代入してゆく方法もあります


main(String[] args) のString配列argsの中にはコマンドプロンプトでの実行時にプログラム名の後ろにスペースで分けて入力した文字列が[0]から順に代入されます

実行時に例えばHello.javaを実行するため

java Hello と入力して実行した時はargsには何も入っていませんが

java Hello nyuuryoku shita と入力して実行した時には

Hello.javaが実行された時mainメソッドの中で
args[0]には nyuuryoku が
args[1]には shita が代入された状態になっています

実行と同時に入力した値をプログラム内で使いたい時に用いる変数です

mainに関してだけは (String[] args) が正しい・・・と思いましたが
( String args[] ) でコンパイルも実行も両方通ったのでどちらも正しいようです

配列を意味しています
例えば
String[] hai={"どちらも","正しい","とは","知らなかった"};
String hai[]={"どちらも","正しい","とは","知らなかった"};
ではどちらも配列を宣言した上でhai[0],hai[1],hai[2],hai[3]に文字列を代入しています。

String[] hai=new String[3];
String hai[]=new String[3];
で配列領域を確保してから
hai[0]="どちらも正しい";...続きを読む

QJavaのString配列で隣り合うデータを順に比較する

JavaのString配列で隣り合うデータを順に比較する

Javaのバージョンは1.5です。

配列の隣り合うデータを順に比較し、異なるデータがあったら
フラグのカウントを+1したいです。(下記の配列の場合のカウントは3になります)
特に並べ替えは行いません。

String[7] color = {"aka","aka","aka","ao","ao","aka","kuro"}

配列のデータ数は固定なので、
for文などのループ処理で比較を繰り替えすものだとは思うのですが、
うまくカウントできません。
一つ目の不一致(3つ目と4つ目の比較)が見つかった後、
次の比較へ移るところ(4つ目と5つ目の比較)がうまくいきません
どのように記述すればよいでしょうか?

Aベストアンサー

素直に行く。

http://ideone.com/L9uPx

Qsplitを使ってスペース位置で文字列を区切りたい

splitを使ってスペース位置で文字列を区切りたいのですが、

String[] word = str.split(" ",0);  //半角空白
のように書くと、全角スペースは区切りとしてみなされず、

String[] word = str.split(" ",0);  //全角空白
のように書くと、半角スペースは区切りとしてみなしてくれません。

全角スペースでも半角スペースでも、スペース位置で文字列を区切りたいのですが、どのように書けばよいのでしょうか?

Aベストアンサー

単純に置換してしまえばよいのでは?

// 全角スペースはすべて半角スペースに置換
// 半角スペースで区切る
String[] word = str.replaceAll(" ", " ").split(" ",0);

QString a = "a"; と String b = new String ("b"); の違い

String a = "a";
String b = new String ("b");

お伺いしたいのですが、
b は String のインスタンスを作ってると思いますが、
a はどんなことをしてるのでしょうか?

Aベストアンサー

お二人の回答を具体的に言うと、こういうことです。
String a1 = "a";
String a2 = "a";
String b1 = new String ("b");
String b2 = new String ("b");

a1のために、aという文字列のインスタンスが作られますが、
a2に代入されるのは、a1に使われたインスタンスが再利用されます。
これは、
if(a1 == a2) System.out.print("a1と同じインスタンス");
の結果でもわかります。

一方、b1とb2は、bという文字列オブジェクトを引数に、新しいインスタンスを生成する指示がありますので、b1とb2と、その初期化に使った無名のStringインスタンスの3つがメモリ上に存在することになります。
if(b1 != b2) System.out.print("b1とは違うインスタンス");
の結果でもわかると思います。

したがって、
String b = new String ("b"); というのは、Integerに例えると
Integer i = new Integer(new Integer(1)); という処理を
していることになり、ひとつ無駄なインスタンス生成となります。

お二人の回答を具体的に言うと、こういうことです。
String a1 = "a";
String a2 = "a";
String b1 = new String ("b");
String b2 = new String ("b");

a1のために、aという文字列のインスタンスが作られますが、
a2に代入されるのは、a1に使われたインスタンスが再利用されます。
これは、
if(a1 == a2) System.out.print("a1と同じインスタンス");
の結果でもわかります。

一方、b1とb2は、bという文字列オブジェクトを引数に、新しいインスタンスを生成する指示がありますので、b1とb2と、その...続きを読む

QStringBuilderをStringに代入

StringBuilderを使って文字列連結して、それをSQL文(String型)として利用するプログラムを作りました。

※SQLはループ処理で約10万個ぐらい発行→実行します

StringBuilderの文字列を、最終的にString型の変数(strSql)に代入するのですが、
下記のどちらで代入する方がコスト掛からないでしょうか?


A案.
----------
StringBuilder sb = new StringBuilder();

sb.append(変数a);
sb.append(変数b);
sb.append(変数c);

String sqlStr = new String(sb);
----------


B案.
----------
StringBuilder sb = new StringBuilder();

sb.append(変数a);
sb.append(変数b);
sb.append(変数c);

String sqlStr = sb.toString();
----------

教えてください。

Aベストアンサー

↓だって。速さならtoString()の方がいいみたいよ。

String

public String(StringBuilder builder)

文字列ビルダー引数に現在含まれている文字列を持つ新しい文字列を割り当てます。文字列ビルダーの内容がコピーされます。 コピー後に文字列ビルダーが変更されても、新しく作成された文字列には影響しません。

このコンストラクタを使用すると、StringBuilder に移行しやすくなります。toString メソッドを使って文字列ビルダーから文字列を取得するのは、処理が高速になるので一般的に推奨されています。

パラメータ:
builder - StringBuilder
導入されたバージョン:
1.5


人気Q&Aランキング

おすすめ情報