はじめて投稿します。
さっそくですが、ある文字とある文字にある
データを取り出すやり方はどうすればいいのでしょうか?
たとえば、
G86X100Y234
や
G86 X100 Y234
のコードをGの後の数字はGの収納場所に、
XはX、YはYの収納場所にってことは
できるのでしょうか?
また、このコードはXを省略していたり、Yが
なかったり、Gもないこともあります。
誰か教えてください!
ある文字とある文字にあるデータを取り出すとありますが
GXYはない場合があるのですよね?
ある文字ってなんですか?
123456789765432これを切り出しでください。と言われてもできませんよね?
ついでにもう1つ質問です
この元の文字列は長さはどのくらい長さですか。
このコードは規則にしたがって
存在しています。GとMコードでは
2桁の数字が後にきます。XとY(座標値)は
2桁になるか3桁か4桁にあるかはわかりません。
(そこまで大きな数字にはなりませんが)
また、順番もGから始まらないものもあります。
たとえば、
X100 Y5444 M04 F0.12
などです。また、コードの並びも
決まっていないのです。
どうしたらよいでしょうか?
また、極端な話
Y10X111
などの場合もありえるかもしれまさん....
Mid関数で1つずつ比較するしかありませんね。
やりたいことは分かりました。
その場合切り出しには通常正規表現を使用します。
また、格納には連想配列を使用するとスマートになります。
正規表現はVBScript RegExpを参照します。
込みいった話なのでやり方すべてをここに書くことはできませんが、
実現方法の1つの紹介としてあげておきます。
通常正規表現?連想配列???
どういうことでしょう?
VBをはじめたばかりなので、専門用語が
わからないのですが。。。。。
どういうことか教えてください。
>正規表現、連想配列
VB固有の専門用語とかでなくて構文解析っぽい
事をしようとする人が知っておいた方が良い基礎知識
というか…特に正規表現、正規言語といったものは
専門学校や大学に行けば必須科目な場合も多いわけで
して…半年くらいじっくりと勉強する気があるなら
ちょっと大きな本屋さんへ行けば見つかると思います。
正規表現だけで1冊の本になるくらいのものですから
自分で勉強してください。
初心者が知識無しに実現するには、やはりねろさんの
言われるように1文字ずつ切り取って判断するか、
俗に言うCSV形式(カンマ区切り)のように初めから
区切りやすい文字列を用意すべきだと思います。
正規表現と連想配列ってそんなに難しいものなんですね・・・・
madyさんの言うようにmidを使って
試してみます。
ありがとうございました!
> 正規表現と連想配列ってそんなに難しいものなんですね・・・
あー。正規表現と連想配列を一緒みたいに書いたのは
まずかったかな。どちらも難しい…というほどの物では
ないと思います。どちらも基礎的な知識だと思いますし
…ただ正規表現は理解するまでに覚えることがたくさん
あると思います。ごくごく簡単に言うと『私は今日の朝
散歩しました』と言う文字列を分解すると主語と述語と
修飾語(?)というルールがあって主語は名詞と代名詞という
ルールがあって…etcで日本語となっています。もんさんの
文字列もアルファベットの次に1つ以上の数値が来ると
いうルールがあったり、それが複数回繰り返されるルールが
あります。考えられる全ての文字列をこのルールに分解し
整頓する…この作業を今まで全く知識のなかった人が2・3日
勉強しただけでやるには無理があると思うんです…一度検索
エンジンで検索してみるといいでしょう。普通に引っかかり
ますから。
連想配列はもっと簡単で…キーと文字列が組になった配列…
[VB.NET]なら SortedList とかありますが…GMXYしか
出てこないなら使う必要はないかな?と思います。こちらも
Googleで1万件以上引っかかるメジャーなもの。
どちらも掲示板で質問するようなものでは無いと思います。
『まずはヘルプを読め』と言われるのはその方が効率が
いいからです。ヘルプにはサンプルプログラムが載ってますし
時には図なんかも載ってます。だいたいヘルプ1ページを
掲示板に載せるなんてバカみたいでしょ?。
こんなメジャーなもの質問する前に一度自分で調べてくだ
さいよ?ってことです。その上で本当に分からない部分のみ!
できれば10行以内で返事できる質問をしてくださいなw
ツイート | ![]() |