- 締切済み
文字列の並び換え
Visual BASIC 6で 文字列の並び換えの方法がわかりません 文字列には半角も全角もあって数字もあります。 if A$ < B$ then ではだめです。
- みんなの回答 (6)
- 専門家の回答
みんなの回答
- Hayashi_Trek
- ベストアンサー率44% (366/818)
#4のひとも言ってますが 質問者が希望する「比較のルール」が不明なのです。 >文字列には半角も全角もあって数字もあります ということですが ・アルファベットの大文字と小文字は区別するのか?同一とみなすのか?("A"と"a") ・アルファベットの半角と全角は区別するのか?同一とみなすのか?("A"と"A") ・カタカナとひらがなは区別するのか?同一とみなすのか?("ア"と"あ") ・アルファベットと数字ではどちらが大きいとするのか? など、いろいろな比較ルールが考えられます。
ようやくやりたいことが何となくわかってきましたが、 >if A$ < B$ then >ではだめです。 VBでは文字コードの大小で比較しますが、動作はしますよね。 これではダメ=「ルールに関して不満」ということでしょうか。これについても質問に書かれていないので良く分かりません。 具体的にはどうすれば満足するのでしょうか。 例;全角の数字は、半角の数字と同列に扱いたい → StrConvを使って、半角へ統一して比較
>?$とB$との並び換えです。 >A$のなかでの並び換えではありません。 質問に書いていないから、無限の想像をしてしまうのです。 並び替えたい文字列が2つしかないわけではありませんよね? まずは条件を明確にしましょう。 データは何件あるのか。どこに保存されているのか。 A$とB$は何に使っているのか? どういう順番で並べたいのか(例:昇順、降順、ランダムでもいいのか) それとも単にA$とB$の内容の大小を比較する方法についての質問なのか?(並び替えはどうでもいいですよね)
お礼
DIM lyr$(100,4) のなかで LYR$(1,1)、LYR$(2,1)、LYR$(3,1)、LYR$(4,1)、LYR$(5,1)・・・・・・・ を並べ替えたいのですが 文字列A$とBSが昇順ないしは降順に並び替えれば できることなので二つの変数をだけで提示しました。 For i% = 1 To n% - 1 For j% = 2 To n% If Lyr$(i%, 1) < Lyr$(j%, 1) Then For k% = 1 To 4 dumy$(k%) = Lyr$(i%, k%) Lyr$(i%, k%) = Lyr$(j%, k%) Lyr$(j%, k%) = dumy$(k%) Next k% End If Next j% Next i%
文字列の並べ替えとは、 "ABCDEF"を"FEDCBA"にするとかでしょうか。
お礼
ありがとうございます。 A$とB$との並び換えです。 A$のなかでの並び換えではありません。
- osamuy
- ベストアンサー率42% (1231/2878)
ああいかん、Comparatorのスペルを間違えてる。
- osamuy
- ベストアンサー率42% (1231/2878)
VBが備えている標準の文字列比較演算で満足できない場合は、比較関数を自作する必要があります。 比較関数Function Compareator(A$ as strimg,B$ as string) as Integer A$がB$が大きいと判断した時は1を、小さい場合は-1を、同じ場合は0を返すようにしてください。 大小関係を判断する比較関数が作成できたなら、配列をソートするサブルーチンは10行くらいで書けます。 逆にいうと、質問文にあるような「文字列には半角も全角もあって数字もあります。」というだけだと比較関数の仕様を決定することができなくて、ソートさせるのは難しいかと。 まずは、「いかに比較するか」を明らかにしてみては。
お礼
ありがとうございます。 Excelでの 並べ替え と同じでいいのですが
お礼
ありがとうございます。