• 締切済み

splitの使用方法

String.split の使用に関してです。 ファイルから一行づつ読み出して split で切って配列にしたいと考えています。 ファイルの中身は 1|ssm3u|00000| 2|ssm3u|11111| のように「|」区切りになっています。 通常のcsv等、カンマ区切りのファイルは split(","); を使用して問題なくできたのですが、 split("|"); と書くと、 「|」ではなく、1文字ごとに切ってしまいます。 どうすれば「|」ごとに切ることができるのでしょうか? あるいは、私のプログラム記述ミスでしょうか?

  • ssm3u
  • お礼率70% (42/60)
  • Java
  • 回答数1
  • ありがとう数1

みんなの回答

  • UKY
  • ベストアンサー率50% (604/1207)
回答No.1

記述ミス……ですね。 split メソッドの引数は正規表現である点に注意してください。「|」という記号は、正規表現の中ではorに相当する演算子を表します。「|」そのものを正規表現の中で表すには、前に「\」をつけて「\|」としないといけません。

ssm3u
質問者

お礼

早速のご回答ありがとうございます。 とりあえず今回は split ではなく、 StringTokenizer を使って解決しました。 次回必要な際は、正規表現まで着目して対応してみます。 ありがとうございました。

関連するQ&A

  • タブの場合→A = split(B,",")の、split、の書き方

    Bに、aaaa,bbbbbb,ccccc、があれば A(1)に、aaaa、が入ります カンマ区切りのデータが切り離されます ところが、カンマ区切りでなく、 タブ区切りの場合はどう記述するのですか タブのアスキーコード(内部コード)は09です Bには aaaa bbbbbb cccccc のように入っています A = split(B,",")のカンマのところはどう記述  するのでしょうか、よろしくお願いします

  • C# Splitと配列の複合方法

    こんにちは、 ”てすと、です。¥四月、寒い。” のような文字列があり これを¥で区切り、さらにカンマで区切って(Splitでここはできたのですが) 結果を下記のように配列に格納したいと思うのですが、どのように記述すればよいでしょうか? 配列(0,0)=”てすと” 配列(0,1)=”です。” 配列(1,0)=”四月” 配列(1,1)=”寒い。” 文字列の内容が定まっていないため配列の要素数が変動してするものでして。

  • CSVファイル 読み込み後のsplit

    loadVarsを使い、CSVファイルを読み込んだ後で、 そのテキストを一度変数に落としてから splitしようとすると、何も返って来ません。 ----- var nText = String(bSuccess_text); gMessageList = nText.split("\r\n"); ←ここ ----- ※bSuccess_text、nText にテキストが来ているのは確認できています。 ※テキストはwindows改行であることを確認しています。 ※splitの値をカンマとか、別の物(1文字のもの)にしてみても同じく何も返って来ません・・。 ※変数に落とさない状態でもダメで、念のためにつけているstring() を外してもダメでした。 どなたかご存知の方がいらっしゃいましたら、よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • 複数の空白のsplitについて

    VB.NEtを最近はじめた初心者です。 CSVファイルを読み込んでデータを空白でsplitして 配列に格納しようとしたのですが、 CSVファイルのデータの間にある空白の数が1~3個 と一定ではなかったためうまくsplitできません。 どのように対処すればよいでしょうか。 ご教授願います。

  • fgetc 使用方法

    失礼します今fgetcで読み込んだファイルをカンマ区切りで配列に追加したいのですが、そのような使用方法は可能でしょうか?よろしくお願いします。

  • SPLIT関数

    環境 VB6.0  CSVデータをカンマで区切ってデータを取得して  いるのですが、こういう処理はできるのでしょうか?  例えば データがダブルコーテーションでくるられて      いる場合はカンマ(,)を無視するといった      ことはできるのでしょうか? DIM CSVDATA AS STRING DIM XWDNDATA() AS STRING CSVDATA = "1,2,"あいう,おえお",25" XWDNData = Split(CSVDATA, ",") XWDNData(0) = "1" XWDNData(1) = "2" XWDNData(2) = ""あいう" XWDNData(3) = "おえお"" XWDNData(4) = "25" XWDNData(2)とXWDNData(3)を一つのデータとしたい こうしたいデータ XWDNData(0) = "1" XWDNData(1) = "2" XWDNData(2) = "あいうおえお" XWDNData(3) = "25"

  • Excel VBAにてCSVファイルを読みたい

    ExcelにてCSVファイルを読んで処理をしたい。 ただし、CSVファイルをExcelでopenすると遅いので、 VBAにてファイルとして読み込みで処理をしたいのですが、 皆さんは、どのように行っていますか? ※CSVファイルは、テキスト区切り→"(ダブルコーテーション)です  テキスト区切り無しであれば、1行読んで、カンマをsplitすれば良いと思いますが。。。。

  • VBでCSVファイルのある行をインポート

    VBでCSVのインポートをしたいのです。 CSVファイルの中身で、最初の5行は読みません。そして、カンマ区切りの行の最初の文字が数字である場合だけを読みたいのです。で最後の3行も読みません。 ですので、CSVのデータを読む場合に最初の5行を飛ばすという方法か、カンマ区切りの行の最初の文字が数字の場合だけ読むという方法はありませんでしょうか。 Line Input #intFileNo, strTextLine strTextLine = Replace(strTextLine, """", "") str = Split(strTextLine, ",") こんな感じのコードで考えてます。 お分かりの方いましたらお願いします。

  • Access VBA Split利用方法

    お世話になります。 VBAを勉強している最中です。 Accessを利用して、txtファイルをインポート後、テーブルの項目を配列利用して カンマ区切りにしたいのと、Splitを利用して、配列を条件分岐に利用して、テーブルに 書き込みをしたいとおもってます。 おそらく基本的なことで自分で勉強するべきと思うのですが 漠然なイメージしかない状態で、ヒントやこういう方法があるなど 教えていただけますでしょうか 基本的な使い方ですと Private Sub XXX_Click() str = Split("あああ いいい ううう")   MsgBox str(1) End Sub 上記の用な利用方法と思いますが、このような使い方ではなく test(0)のような使い方をして、条件分岐で利用したいと おもってます。 イメージとしては、下記のようなことをイメージしてます。 Public Sub Test()   Dim test() As String Dim row As String   Dim iNum1 As Long,   Dim iNum2 As Long      DoCmd.SetWarnings False   DoCmd.RunSQL "DELETE * FROM data"  DoCmd.TransferText acImportFixed, "インポート定義", "data", "d:\data.txt"   DoCmd.SetWarnings True   iNum1 = 0   iNum2 = 0   Do While xxx      If test(0) = 0 Then          iNum1 = iNum1 + 1 iNum2 = 1      Else         xxxx      End If   Loop End Sub ここでSplitを利用してどのように指定するのが望ましいのか考えてしまってます。 test = row.Split(" ") を利用する場合、どのように連結(row)させるのかが不明です。 知識不足もあり、説明がわかりづらいと思うのですが、よろしくお願いします。

  • カンマ区切りでないテキストをcsvへ

    カンマ区切りしていないテキストファイルを一気にカンマ区切りしてcsvに変更することはできないのでしょうか?? 元のテキストファイルをワードパッドで開いてカンマ区切りし直して保存し、名前の変更でcsvに変更(拡張子が変更するとファイルが使用できなくなる可能性あり、というエラーは無視)したら読み込めるようにはなります。 しかしカンマ区切りし直すというのは面倒です。

専門家に質問してみよう