【初心者必見】文字列操作の方法まとめ

このQ&Aのポイント
  • 文字列操作の方法について詳しく教えてください。ファイル内の文字データを検索したり、差し替えたりする方法を知りたいです。
  • 困っている問題:ファイル内の指定した文字列を検索し、別の文字列に差し替える方法がわかりません。また、別の場所に指定した文字列を挿入する方法も教えてください。
  • ファイル内での文字列操作について困っています。具体的には、指定した文字列を検索してコピーし、別の場所に貼り付けたいです。どのようにプログラムを書けばよいか教えてください。
回答を見る
  • ベストアンサー

文字列操作について・・(初心者です)

いつもお世話になっています。 ファイルの中の文字データを検索して、それを差し替えたり、ある文字を挿入したりする事がしたいのですが、上手くいきません。 今とても困っています↓力を貸して頂くとありがたいです。 <質問> ファイルは2つでAとBと言うテキストファイルがあります。 ●1●で1つのグループ名(数字は昇順で複数あり) ☆1☆で1つのグループ名(数字はランダムで複数あり)  *●~●と☆~☆は同じ数存在します。 A⇒●~●が順に複数入っています B⇒文章が入っている途中に☆~☆が混ざって、入っています。 例)Aの中から●1●を検索する。その文字列をコピーする。Bの中からAで検索した同じ数字の☆1☆を検索する。見つかったら、そこに、貼りつける。 このような、作業は可能ですか?もし可能であれば、どうプログラムを書けばいいですか?ポイントでもいいので教えてください。   

  • Perl
  • 回答数2
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • moon_piyo
  • ベストアンサー率60% (88/146)
回答No.1

Aのテキストファイルのレイアウトが書いてないので その部分は対応できませんが,それ以外の部分でしたら 下記のような感じでどうでしょう #!perl open(A, "<a.txt"); while (<A>) { # たとえば●3● と ccc がペアでしたら # $data{3} = "ccc"; というコードがここにはいる } open(B, "<b.txt"); while (<B>) { s/☆(.+?)☆/$data{$1}/eg; print; }

その他の回答 (1)

  • moon_piyo
  • ベストアンサー率60% (88/146)
回答No.2

#1です s///のあとのeは今回は不要でした s/☆(.+?)☆/$data{$1}/eg; ↓ s/☆(.+?)☆/$data{$1}/g; すいませんでした

Chiaki---
質問者

お礼

ありがとうございました! とてもわかりやすく説明してもらい助かりました。 プログラムは無事に完成する事ができました。

関連するQ&A

  • 行列データ?の文字列操作についてです。

    行列データ?の文字列操作についてです。 ----------------------------------------------- ID A B C D E 1 1.5 1.1 a 6 2 7.4 b 1 3 7.2 c 1 4 3.2 3.1 a 1 5 1.9 1.6 a 4 6 4.0 d 3 8.0 (上手く張れませんので、画像ファイルをつけました。 実際のデータはこのようにtabが入っています。) ----------------------------------------------- 上記のような文字列?をテキストボックスのようなところに入力(ペースト)し、 変換ボタンを押すことにより、 変換後文字列 1.1-1.5(6, a), 1.6-1.9(4, a), 3.1-3.2(1, a), 4.0(3, d, 8.0), 7.2(1, c), 7.40(1, b) と変換させたい。 行っていることは下記になります。 1、B列の数字が入力されていて、A>Bの時にはAとBを入れ替える。 2、A列の数字で昇順でソートする。 3、B列の数字が入力されているものは「A-B」とする。 4、それぞれの行を「A-B(D, C,E)」として「,」でつなぐ。 今回文字列の例として6行のものを示しましたが、行数は増減します。 列はE列まででこちらは増減しません。 Excel VBAを用いて行っているのですが、javascriptで組みたいと考えています。 可能なものでしょうか?

  • SED等で文字列を抽出したい

    MacOS X 10.6のターミナルを使って文字列を加工して抽出する方法の質問です。 次のような複数行からなるテキスト(ファイル名を 1.txt とします)があります。 <a href="./hoge/82111.310.12345000.htm" target="_blank"> <a href="./hoge/42403.310.33345025.htm" target="_blank"> <a href="./hoge/22154.310.50873323.htm" target="_blank"> ... このテキスト(1.txt)から、sed(?もっと適切なものがあれば別のものでも)コマンド を用いて 82111.12345000.htm 82401.33345025.htm 82111.50873323.htm ... といった具合に、 hoge/ のあとから始まり htmで終わる文字列から .310を取り除いた文字列を抜き出して ファイル一覧のテキスト(2.txt) に書き出す方法を教えてください。 なお、1.txtの行数は不定で変動し、その行数に応じて2.txtも行数が増えていきます。 また htmのファイル名のところは 5桁のランダムな数字.310.8桁のランダムな数字.htm という規則になっています。(.310 と.htm の部分は固定です) よろしくお願いします。

  • vba 文字列の並び替え

    こんにちは! VBAにて以下の処理をしたいのですがどうやっても上手くいかず悩んでます。 A列には文字列B列には数字が入っています。 B列を昇順で並び替えし且つA列に指定した文字列がある場合先頭にデータを昇順で持ってくる。 ※B列で並び替えたあとにif構文で切り取り→挿入を試みたのですがどうしても昇順にならず 泣 どうかご教授下さい(ToT) 宜しくお願い致します。 A B EEEE 1 EEEE 2 RRRR 3 RRRR 4 FFFF 5 DDDD 6 上記の状態からRRRRを先頭に持っていき昇順で並び替えする。

  • Perlでの文字列操作について

    Perlを使用しての文字列操作について教えてください。 たとえば以下のような数字とアルファベットが順に並ぶ文字列があるとします。 11A4C555D67B114B9423C アルファベットは1文字ですが、数字は何個でも連続で並びます。 この文字列を「数字アルファベット」の部分で分割し、配列に格納したいのですが、うまくいきません。 @array=('11A','4C','555D','67B','114B','9423C') どなたか教えてください。よろしくお願いいたします。

  • 文字列

    お世話になります。最近文字列を勉強し始めたのですが、文字列になるとてんでダメになってしまいます・・・。お聞きしたいことは2つあります。 1.テキストファイルから英単語を読み込み、それらをアルファベット順に並べ、新たにテキストファイルに書き込むというものです。例えば、 january February march April Apple と読み込んだなら、 Apple April February january march と書き込みたいのです。文字列を配列に格納し、一文字一文字比較していきたいのですが、文字だとどのように比較して順番を変えればよいのでしょうか。数字の比較なら簡単に出来るんですが、文字だとわからなくなってしまいます。 2.これも同じく文字なのですが、テキストファイルから英単語、あるいは英語のフレーズを2つ読み込み、その2つの英語がアナグラムかどうかを判定するものです。 アナグラム→http://d.hatena.ne.jp/keyword/%A5%A2%A5ʥ%B0%A5%E9%A5%E0 例えば、「O, Draconian devil!」と「Leonardo da Vinci!」を読み込んでアナグラムか判定します。ちなみにこれはアナグラムです。これも一文字一文字比較していくと思うのですが、どのように比較すれればよいのかがわかりません。どなたか宜しくお願い致します。

  • 検索文字列以外のファイル

    テキストファイルの中身を検索して、その文字列以外のファイル名を取りたいのです。具体的には、 【A.txtの中身】 123 abc 【B.txtの中身】 111 abc 【C.txtの中身】 222 abc このようなテキストファイルの中身を検索して、文字列「123 abc」以外が書かれているファイル名(つまり、B.txt、C.txt)を取得したいのですが、findstrやForなどを駆使すれば、できますでしょうか?

  • エクセルの文字列並べ替えについて

    エクセルの文字列並べ替えについて エクセル2000です。 半角文字列の数字とアルファベットを通常のエクセルの機能で昇順で並べ替えた場合 012 013 111 1AA 1B1 211 222 22C 23A 2AB 2BC のように並ぶと思います。(ここでの数字は数値でなく、すべて文字列です) 数字→アルファベットの順番のようです。 これを「アルファベット」→「数字」の順番で並べ替える方法はないでしょうか? 以下のような順にです。 ユーザー定義のリストに基づいた並べ替えがあることは存じていますが、3桁だけでも英数混在だと36×36×36=46,656個のリストを登録しなければならないことになり、現実的と思えません。 目的は、ホストコンピュータから出力される紙のデータがなぜかこのような順で出てきて、それにエクセルで作成したデータをあわせる必要が出てきたためです。 012 013 1AA 1B1 111 2AB 2BC 211 22C 222 23A エクセルの一般機能でもVBAでもかまいません。ご教示いただけると幸いです。

  • エクセルでダブっている文字列を見つける

    いつもお世話になっています。 早速ですが、エクセルでaというファイルとbというファイル2つのデータがありその中にはそれぞれ13字の文字列(数字)が100以上あるのですが、ダブっているものを見つけるにはどうすれば簡単にできるでしょうか? よろしくお願いします

  • 秀丸で文頭に2,3行の文字列を挿入したいです。

    行頭は「^」分かるんですが、文頭はなんでしょうか? golinetop2;ではダメでした。 秀丸をつかっています。emeditorでもいいので教えてください。 地道にマクロを作るにしても大量のテキストファイルを処理したいので 書き方がわかりません。 Devas34(複数ファイルからテキストを検索、一括置換するソフト)もあるんですが、 文字列の挿入がうまくいきません。 検索が下手なのか なかなか答えにたどり着きません。 どうかよろしくお願いします。

  • VBSの文字列操作

    以下のようなファイルに対して、文字列xxxxxに囲まれた数値の合計をそれぞれ算出したいです。 以下の例では、 1+6+5=12 , 2+8=10 , 0+2+8+7=17 のように算出(合計値のみ)したいです。 尚、数字の個数はランダムです。 <ファイルの中身> xxxxx 1 6 5 xxxxx 2 8 xxxxx 0 2 8 7 xxxxx 何か良い方法があれば、ご教授願います。

専門家に質問してみよう