- PR -

文字のマッチング

投票結果総投票数:10
java 10 100.00%
  • 投票は恣意的に行われます。統計的な調査と異なり、投票データの正確性や標本の代表性は保証されません。
  • 投票結果の正当性や公平性について、@ITは一切保証も関与もいたしません。
投稿者投稿内容
kazurock
常連さん
会議室デビュー日: 2005/01/24
投稿数: 40
投稿日時: 2005-01-24 13:12
こんにちわ。
どなたかご教授してください。

001:START:/054:TEXT SPEECH:
001:START:/021:GET VAR:9876543210#021:GET VAR:9876543210#
001:START:/021:GET VAR:9876543210#054:TEXT SPEECH:
001:START:/021:GET VAR:9876543210#024:TEXT SPEECH:

こういったデータの中から『:』の前の3桁の数字を取り出したいです。
いろいろ試してみているのですがどうしたらいいかわかりません。
どなたかご教授していただけるとありがたいです。
-----------------------------------------------------------------------------
追記
rs = stmt.executeQuery("SELECT IDNO,FLAG1,FLAG2 FROM dual");
for(int i=0;rs.next();i++){
voitbl[0][i] = rs.getString("IDNO");
voitbl[1][i] = rs.getString("FLAG1");
voitbl[2][i] = rs.getString("FLAG2");
}

にはあらかじめ取り出すコード3桁があります。
これらと先のデータをマッチングして取り出せたらいいと思います。
3桁のコードと1行のデータをマッチングさせると複数の戻り値が出てもかまいません。


[ メッセージ編集済み 編集者: kazurock 編集日時 2005-01-24 14:17 ]
ぼんじぃ
ベテラン
会議室デビュー日: 2004/05/21
投稿数: 70
投稿日時: 2005-01-24 14:06
とりあえず、いろいろ試したことと結果を提示してみては?
その方が回答が得やすいと思います。

たぬきそば
会議室デビュー日: 2004/05/28
投稿数: 12
お住まい・勤務地: 世間は広いようで狭い
投稿日時: 2005-01-24 14:10
直接の回答はできませんが・・・
まず、あなたのやりたいことをあなた以外の人間にやってもらうとしたら
どういう手順を示しますか?
それを考えないと、期待するものにはならんでしょう。また、
回答が出てきてもあなたが本当にほしい結果にならんでしょうね。
言語におとすのはその後です。
がるがる
ぬし
会議室デビュー日: 2002/04/12
投稿数: 873
投稿日時: 2005-01-24 17:03
どもでふ。がると申します。

引用:

001:START:/054:TEXT SPEECH:
001:START:/021:GET VAR:9876543210#021:GET VAR:9876543210#
001:START:/021:GET VAR:9876543210#054:TEXT SPEECH:
001:START:/021:GET VAR:9876543210#024:TEXT SPEECH:
こういったデータの中から『:』の前の3桁の数字を取り出したいです。


「取り出せばよいと思います」ってのが身も蓋もない回答になる
のですが :-P

なんとなく、Javaっぽい感じで大まかにコードを書いてみます。
まず、コメントを豊富に、プログラムとしては機能しないような
書き方をしてみます。
実際にはもうちょっとエレガントに書いたほうが良いのですが :-P
その辺はまぁ適宜補ってください。
コード:
文字配列(vectorとかそーゆーイメージ)  関数名(string データ) {
  // 下準備
  作業用文字列 = "";
  作業用文字列の配列;  // 取得した"3桁の数字"の文字列格納用

  for(データを1文字づつ => c) {
    if ((c != 数字)&&(c != ':') ) {
      // 念のために初期化
      作業用文字列 = "";
      // 次の文字の精査に移る
      continue;
    }

    // もし数字なら文字列に追加
    if (c == 数字) {
      作業用文字列 += c;
      continue;
    }

    // ここにくるのは':'だけのはずなのでifは省略
    // 長さのチェック
    if (3 != 作業用文字列.length()) {
      // どーゆーエラー判定がお好みでしょう???
      continue;
    }

    // ここまできたら3桁の数字+':'なので
    作業用文字列の配列.add(作業用文字列);
    作業用文字列 = "";
  }

  //
  return 作業用文字列の配列;
}


こんな感じじゃないですかね?
立場スキル背景その他何も見えないので、とりあえず大まかに、ですが。
(株)ぽち
ぬし
会議室デビュー日: 2002/09/10
投稿数: 376
投稿日時: 2005-01-24 18:04
・StringTokenizerを調べてみる。
・Stringを調べてみる。

お好みで。
MMX
ぬし
会議室デビュー日: 2001/10/26
投稿数: 861
投稿日時: 2005-01-24 18:30
マッチングが次の処理なのだから、データをDB側に送り込んで
一時表を作ってSQL結合ではでしょう。区切り文字は調整可能として
Java のスクリプト言語もいいかもしれません。
植村
会議室デビュー日: 2004/10/28
投稿数: 11
投稿日時: 2005-01-24 18:44
引用:

001:START:/054:TEXT SPEECH:
001:START:/021:GET VAR:9876543210#021:GET VAR:9876543210#
001:START:/021:GET VAR:9876543210#054:TEXT SPEECH:
001:START:/021:GET VAR:9876543210#024:TEXT SPEECH:

こういったデータの中から『:』の前の3桁の数字を取り出したいです。



String line = "001:START:/054:TEXT SPEECH:";
String num = line.substring(0, 3);

松川(日々精進)
会議室デビュー日: 2005/01/19
投稿数: 18
投稿日時: 2005-01-24 19:29
JDK1.4が使える環境でしたら、こんなのはいかがでしょうか。

コード:


String logStr = "001:START:/054:TEXT SPEECH:";
String[] elementsArray = logStr.split(":");
String headNumStr = elementsArray[0];
int headNum = Integer.parseInt(headNumStr);






[ メッセージ編集済み 編集者: 松川(日々精進) 編集日時 2005-01-24 19:34 ]

スキルアップ/キャリアアップ(JOB@IT)