• ベストアンサー

全角スペースを削除するには?

全角のスペースの削除の仕方を教えてください。 例を下に示します。 50桁の変数"name"の中身は"山田 太郎           "です。 変数の中身は、山田 太郎の後ろは全角のスペースが入っています。 名前の後ろの全角のスペースが半角4桁(全角2桁)以上ある場合は、 それ以降を削除したと思っています。 かなり困っています。良い方法をどなたかご伝授下さい。 宜しくお願いします。

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

  • ベストアンサー
  • josyo_m
  • ベストアンサー率63% (28/44)
回答No.2

お疲れ様です。 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 間違っていたらごめんなさい。

tomoyui
質問者

お礼

josyo mさんのプログラム通りでずばり出来ました。 ありがとうございます。本当に助かりました m(_ _)m

その他の回答 (4)

  • honiyon
  • ベストアンサー率37% (331/872)
回答No.5

こんにちは、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変数の内容(あいうえお)を左から順に、一文字ずつ取り出して表示します。  参考になれば幸いです(..

回答No.4

重複回答ですみません、補足します。 name = "   山田 太郎    " などの場合で、左側全角スペースを破棄したくない場合は、Trim関数をRTrim関数に置き換えてください。

回答No.3

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)
回答No.1

こんにちは、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個以上並んでいる時は、最初の一個だけコピーして、次から並んでいる全角スペースはコピーしない、という仕組みです。    参考になれば幸いです(..

tomoyui
質問者

補足

よろしければ、1文字ずつ検索する方法も教えて頂けないでしょうか? とことん初心者で申し訳ないです。

関連するQ&A

専門家に質問してみよう