アプリ版:「スタンプのみでお礼する」機能のリリースについて

全角のスペースの削除の仕方を教えてください。

例を下に示します。

50桁の変数"name"の中身は"山田 太郎           "です。
変数の中身は、山田 太郎の後ろは全角のスペースが入っています。

名前の後ろの全角のスペースが半角4桁(全角2桁)以上ある場合は、
それ以降を削除したと思っています。

かなり困っています。良い方法をどなたかご伝授下さい。
宜しくお願いします。

A 回答 (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変数の内容(あいうえお)を左から順に、一文字ずつ取り出して表示します。

 参考になれば幸いです(..
    • good
    • 0

重複回答ですみません、補足します。



name = "   山田 太郎    "

などの場合で、左側全角スペースを破棄したくない場合は、Trim関数をRTrim関数に置き換えてください。
    • good
    • 0

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と表示されますので、目的の処理結果になります。
参考になれば幸いです。
    • good
    • 0

お疲れ様です。



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

間違っていたらごめんなさい。
    • good
    • 0
この回答へのお礼

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

お礼日時:2001/12/25 16:25

こんにちは、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文字ずつ検索する方法も教えて頂けないでしょうか?
とことん初心者で申し訳ないです。

補足日時:2001/12/25 15:14
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています