perlとMySQLでデータベースを作っています。
だいぶ行き詰ってしまったので質問させてください。
以下のような一行の文字列が存在するとします。
ABC DEF @@@2222 EHI J @@@888 KL MN OPQR @@@632 ST
この中から、
2222
888
632
を取り出して配列に格納することは可能でしょうか?
分割することは可能な気はするのですが、
それを配列に入れるとなるとどうにもならなくなってしまいました。
漠然とした質問で大変申し訳ないのですが、
なにかヒントになるものだけでもお気づきの方いらっしゃいましたら、
ぜひご教示くださいませ。
No.3ベストアンサー
- 回答日時:
やり方はいろいろありますが、「英数字と空白以外の文字列」に続く「英数字文字列」を配列に入れるなら、
$str='ABC DEF @@@2222 EHI J @@@888 KL MN OPQR @@@632 ST';
(@array)=($str=~/(?<=[^\s\w])(\w+)/g);
ご回答ありがとうございます。
なるほど!
>(?<=[^\s\w])(\w+)/g);
この部分を解読していて、
こんな方法もあるのかと感心してしまいました。
今はとりあえずspliceを使ってうまくいっているのですが、
バグが出るようならこちらの方法で試してみたいと思います。
ありがとうございました。
No.2
- 回答日時:
この文章だけからは「何を取り出すのか」が分かりません.
どんな文字列が来てもいいように, 言葉で「取り出すべきもの」を規定してください. それができなければ, プログラムにすることは不可能です.
案外
s/@@@(\d+)/g
くらいだったりして.
ご回答ありがとうございます。
言葉足らず過ぎてすみませんでした。
今回のケースでは、
逆に後で分割するために@@@という文字列を途中で足していました。
ですので取り出すべきものは、
@@@直後にある不特定数桁の数字というものでした。
このままだと分割するのに困ったので、
街頭数字の頭と末尾両方に@@@を入れることでなんとか解決することができました。
ありがとうございました。
No.1
- 回答日時:
まず、文字列をスペースでsplitします。
その配列の要素ひとつひとつに対し、
@@@を含むか否か、をジャッジします。
含むものだけを抜き出し、別の配列に格納します。
その配列の全ての要素に対し、
@@@を削除する処理を施します。
ご回答ありがとうございます。
論理的な処理順序はなんとか理解できていたのですが、
>含むものだけを抜き出し、別の配列に格納します。
この部分の方法が思いつきませんでした。
結局spliceという関数でなんとかすることができました。
ヒントをいただき、ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C#の問題です。 文字列型の配列 s[100] にキーボードから入力された100文字以内の文字列(単 2 2022/06/22 15:18
- Visual Basic(VBA) 特定の文字を簡単な操作で半角スペースに変換するか削除したい 2 2022/11/01 10:35
- Visual Basic(VBA) VBAでのMATCH関数 3 2022/10/17 19:06
- Visual Basic(VBA) 以下のVBAで該当文字列の前後に付与したい。 例 前に付与 abc ユーザーID 12345 後に付 3 2022/04/19 21:50
- Visual Basic(VBA) EXCEL VBA 単語置き換え について質問です ブック名 ぶぶぶ シート名 ししし セル V3〜 3 2023/03/08 01:41
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- その他(プログラミング・Web制作) PythonでLoopを使って配列内の文字列を結合する。そして [] を削除する 1 2022/03/31 23:28
- Excel(エクセル) エクセルの条件付き書式で*を使いたい 4 2022/05/13 16:49
- C言語・C++・C# C言語の質問です。 以下の命令を実行するプログラムを作りました ①文字列aとbの長さを表示 ②aとb 1 2022/04/29 15:35
- Visual Basic(VBA) エクセルVBAについて 2 2023/01/31 16:21
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
隣同士の数字を足し合わせる
-
参照配列の要素数の求め方は?
-
クラスに配列を渡す方法
-
VBAのautofilter、criteriaの配...
-
二次元配列における要素数のは...
-
Powershell $変数 = @()の空配...
-
Dim flag(4) as boolean で配列...
-
Perlのデータ変換
-
UWSCに制限時間を付けたいです
-
エクセルの当番表を作っていま...
-
画面を強制的に再描画させる方法
-
まったく同じファイルのハッシ...
-
プログラムの機能を変えずに高...
-
VBA for i=1 to lastrow
-
UWSCの終了の仕方
-
DoEventsが必要な理由について
-
どなたかこのプログラミングを...
-
テキストボックスの名前に変数...
-
vb.netからエクセル関数書き込み
-
pythonでファイルのコメント行...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAのautofilter、criteriaの配...
-
二次元配列のインデックスについて
-
リストボックスに縦スクロール...
-
Excel VBA ユーザーフォームの...
-
マクロ Publicでの配列定義
-
エクセルVBAでTransposeの不思議
-
Strawberry Perl for Windows ...
-
二次元配列における要素数のは...
-
perlで2次元配列をサブルーチ...
-
クラスに配列を渡す方法
-
Dim flag(4) as boolean で配列...
-
文字の整列(printf)
-
perlで配列の要素が空なのを知...
-
jcode->jfold で禁則処理
-
VB6で配列の最大値を簡単に求め...
-
perl 配列の要素数について
-
ファイル名に日付・時刻を付与...
-
チェックボックスのperlでの値...
-
組み合わせについての質問です...
-
配列を初期化する時ってどうす...
おすすめ情報