- ベストアンサー
全角スペースを削除するには?
全角のスペースの削除の仕方を教えてください。 例を下に示します。 50桁の変数"name"の中身は"山田 太郎 "です。 変数の中身は、山田 太郎の後ろは全角のスペースが入っています。 名前の後ろの全角のスペースが半角4桁(全角2桁)以上ある場合は、 それ以降を削除したと思っています。 かなり困っています。良い方法をどなたかご伝授下さい。 宜しくお願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
お疲れ様です。 RTrim$()で後ろの空白を削除すればよいのではないでしょうか。 「スペースが半角4桁(全角2桁)以上ある場合」は文字の長さの差で見ては同でしょうか。 余り良い方法ではないかもしれませんが。。。 Option Explicit Private Sub Form_Load() Dim strNAME As String strNAME = "山田 太郎 " '// 後ろの空白を削除したものと、何Byteの差が有るかを調べる If LenB(StrConv(strNAME, vbFromUnicode)) - LenB(StrConv(RTrim$(strNAME), vbFromUnicode)) >= 4 Then '// 4Byte以上の差があるので後ろの空白削除 strNAME = RTrim$(strNAME) Else '// 4Byteも差がないのでそのまま End If '// 結果表示 MsgBox """" & strNAME & """" End Sub 間違っていたらごめんなさい。
その他の回答 (4)
- honiyon
- ベストアンサー率37% (331/872)
こんにちは、honiyonです。 一文字ずつ検査していくには、文字列から検査する一文字だけを取りだす必要があります。 文字列からその一部分だけを取り出すには MID$関数を使います。 以下は具体的な使用例です。 Private Sub Command1_Click() Dim name As String name = "山田 太郎" For i = 1 To Len(name) MsgBox Mid$(name, i, 1) Next i End Sub これを実行すると、name変数の内容(あいうえお)を左から順に、一文字ずつ取り出して表示します。 参考になれば幸いです(..
- simotetsu
- ベストアンサー率20% (1/5)
重複回答ですみません、補足します。 name = " 山田 太郎 " などの場合で、左側全角スペースを破棄したくない場合は、Trim関数をRTrim関数に置き換えてください。
- simotetsu
- ベストアンサー率20% (1/5)
VB5.0(SP3)での回答とさせていただきます。 簡単に説明させていただくと、一度可変長文字列変数にTrimして代入し、取り出すという方法で処理可能です。 Private Sub TestCode() Dim name As String * 50 Dim name_work As String name = "山田 太郎 " name_work = name name_work = Trim(name_work) MsgBox Len(name_work) End Sub MsgBox関数にて、5と表示されますので、目的の処理結果になります。 参考になれば幸いです。
- honiyon
- ベストアンサー率37% (331/872)
こんにちは、honiyonです。 もし、名字と名前の間のスペースも同様に、「全角2桁以上の場合は全角1桁にする」という処理を適用しても良いのなら簡単です。 NAME = "山田 太郎 "とする。 1.SpaceCount変数を用意(整数型) 最初に 0でリセットしておく。(SpaceCount = 0) Answer変数を用意。(文字列型) 同様に ""でリセット。(Answer = "") 2.NAME変数の、左から順に1文字ずつ検査していく。 もし、全角スペースを発見したら、SpaceCountに1を加算する。 もし、全角スペース以外なら、SpaceCountに0を代入する。 もし、SpaceCount <= 1なら、現在検査途中の1文字を、Answerに追加する。(SpaceCount > 1の時は追加しない) 簡単に説明すると、NAME変数の中身を、一文字ずつ Answer変数にコピーしていきます。 その仮定で、全角スペースが2個以上並んでいる時は、最初の一個だけコピーして、次から並んでいる全角スペースはコピーしない、という仕組みです。 参考になれば幸いです(..
補足
よろしければ、1文字ずつ検索する方法も教えて頂けないでしょうか? とことん初心者で申し訳ないです。
お礼
josyo mさんのプログラム通りでずばり出来ました。 ありがとうございます。本当に助かりました m(_ _)m