OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

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

  • すぐに回答を!
  • 質問No.190362
  • 閲覧数426
  • ありがとう数1
  • 気になる数0
  • 回答数5
  • コメント数0

お礼率 21% (29/134)

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

例を下に示します。

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

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

かなり困っています。良い方法をどなたかご伝授下さい。
宜しくお願いします。
通報する
  • 回答数5
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.2
レベル9

ベストアンサー率 63% (28/44)

お疲れ様です。

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

お礼率 21% (29/134)

josyo mさんのプログラム通りでずばり出来ました。
ありがとうございます。本当に助かりました m(_ _)m
投稿日時 - 2001-12-25 16:25:16
-PR-
-PR-

その他の回答 (全4件)

  • 回答No.1
レベル13

ベストアンサー率 37% (331/872)

こんにちは、honiyonです。  もし、名字と名前の間のスペースも同様に、「全角2桁以上の場合は全角1桁にする」という処理を適用しても良いのなら簡単です。  NAME = "山田  太郎      "とする。  1.SpaceCount変数を用意(整数型)    最初に 0でリセットしておく。(SpaceCount = 0)    Answer変数を用意。(文字列型 ...続きを読む
こんにちは、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

お礼率 21% (29/134)

よろしければ、1文字ずつ検索する方法も教えて頂けないでしょうか?
とことん初心者で申し訳ないです。
投稿日時 - 2001-12-25 15:14:40


  • 回答No.3
レベル4

ベストアンサー率 20% (1/5)

VB5.0(SP3)での回答とさせていただきます。 簡単に説明させていただくと、一度可変長文字列変数にTrimして代入し、取り出すという方法で処理可能です。 Private Sub TestCode() Dim name As String * 50 Dim name_work As String name = "山田 太郎     &q ...続きを読む
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と表示されますので、目的の処理結果になります。
参考になれば幸いです。
  • 回答No.4
レベル4

ベストアンサー率 20% (1/5)

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

name = "   山田 太郎    "

などの場合で、左側全角スペースを破棄したくない場合は、Trim関数をRTrim関数に置き換えてください。
  • 回答No.5
レベル13

ベストアンサー率 37% (331/872)

こんにちは、honiyonです。  一文字ずつ検査していくには、文字列から検査する一文字だけを取りだす必要があります。 文字列からその一部分だけを取り出すには MID$関数を使います。  以下は具体的な使用例です。 Private Sub Command1_Click() Dim name As String name = "山田 太郎" F ...続きを読む
こんにちは、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変数の内容(あいうえお)を左から順に、一文字ずつ取り出して表示します。

 参考になれば幸いです(..
このQ&Aのテーマ
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ