• ベストアンサー

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

全角のスペースの削除の仕方を教えてください。 例を下に示します。 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

  • 末尾の全角スペースの削除

    SQL Server 2008環境です。 文字列の末尾の空白を一括して削除したくて、以下のようなクエリを書きました。 UPDATE TEST_TABLE SET NAME = REPLACE(RTRIM(REPLACE(StoreBranchName, ' ', ' ')), ' ', ' ') 全角スペースを一度半角スペースにして、RTRIMをかけた後、最後に 半角スペースを全角に直すというものです。 しかし、これだと、元々半角スペースが入っていた場合、そっちまで全角スペースに なってしまうため悩んでおります。 うまいやり方を教えていただけないでしょうか。 宜しくお願いします。

  • 秀丸エディタで半角や全角スペースを自動改行したい。

    秀丸エディタを使っているのですが、マクロなどを使って半角や全角スペースを自動で改行するにはどのようにすればいいのでしょうか? 例えば、全角や半角のスペースを改行したい場合、 日本 アメリカ(全角スペース) 山田 太郎(半角スペース) などを 日本 アメリカ 山田 太郎 のように改行したいです。 よろしくお願いします。

  • エクセルで半角や全角スペースを自動改行したい。先ほどの質問と同様です。

    エクセルで半角や全角スペースを自動で改行するにはどのようにすればいいのでしょうか? 例えば、全角や半角のスペースを改行したい場合、 日本 アメリカ(全角スペース) 山田 太郎(半角スペース) などを 日本 アメリカ 山田 太郎 のように改行したいです。 よろしくお願いします。

  • 半角スペースを全角スペースに

    文字列で、半角スペースを全角に置き換える方法がわかりません。。。 正規表現が苦手で、MySQLに登録する画面を作りましたが、半角スペースがあると、それ以降が無視されてしまうため、その半角スペースを全角スペースに置き換えたいのですが、書式がわかりません。 すいませんが、ご教授お願いします。 あと、もし全角スペースに置き換える方法以外で何かいい策などもしありましたら、それもよろしくお願いします。

    • ベストアンサー
    • PHP
  • エクセルで 全角の空白を含むセルを見つけたい

    こんにちは。 エクセルを使っていて、姓名の間に半角の空白(スペース)を入れるはず なのですが、全角の空白を入れたデータがいくつか出来てしまいました。  (正) 山田 太郎  /ヤマダ タロウ・・・半角スペース  (誤) 山田 太郎 /ヤマダ タロウ・・・全角スペース これを探したいのですが(直すのはまた別のソフトなのです。 エクセルでチェックしながら直さないとなんです。不便。。) ご存知の方がいらっしゃいましたらよろしくお願いいたします!

  • <至急>Wordや一太郎でのスペースを入れたときのずれ

    Wordや一太郎で文字を入力してスペースをいれ改行したとき <例> 教えてgoo1位  山田太郎 総合1位    中村太郎 と入力したとき、山と中のとこにズレか生じます。 これを半角スペースや全角スペースで調節しても ズレてしまいます。どうすればいいのでしょうか? 急いでます。よろしくお願いします。

  • エクセルでのスペース削除

    教えてください。。。 例)  山 田 太 郎→山田太郎と文字間のスペースを削除したいのです。TRIM関数だと前後のスペースしか削除されません。どうぞ宜しくお願いします。。。

  • Excelでセルに入っている数字又は文字のうしろに決められた数のスペースを入れるようにするには?

    エクセルでセルに入っている数字又は文字のうしろに決められた数のスペースを入れるようにすることって出来ますか? 例えば、 A1セルに 123456 という数字が入っていた場合 123456 の後ろに半角スペースを6コつけて 「123456_ _ _ _ _ _ 」 いう風に。 B1セルに 山田太郎 という文字が入っていた場合 山田太郎のあとに全角スペースを5コ入れて 「山田太郎_ _ _ _ _ 」 セルの数字を入力すると半角又は全角スペースを決められている数だけ自動で入力されるようにしたいのですが 何かいい方法はないでしょうか? accessでマクロ使ったほうが簡単かもしれないんですが、accessあまり分からないので・・。 説明がわかりにくくて申し訳ないんですがよろしくお願いします!!

  • 全角スペースを切り落とす方法

    掲示板などで、投稿された名前などに入っている全角スペースを切り落としたいのです。 $name =~ s/\s+//g; これでやってみたのですが、半角スペースしか切り落とせません。 全角スペースを切り落とすにはどのような方法がありますでしょうか? 自分なりに調べてみたんですが、わかりませんでした。 お時間ございましたら、教えていただけますでしょうか? 方法を紹介してあるURLだけでも結構ですので、よろしくお願い致します。

  • JacaScriptのスペース削除について

    JavaScriptのスペース削除についての質問です。以下のコードで、入力された値が空白又はAllブランクだった時の処理をしています。ここに、前後に全角半角スペースが入力された場合は、それを削除する、という処理を入れたいので、以下のようにしています。 /*(1)*/function trim(nameTXT) { return nameTXT.replace(/^[ \t\r\n]+|[ \t\r\n]+|[ \t\r\n]+|[ \t\r\n]+$/g, ""); } // 未入力またはスペース入力時のアラート及びフォーカス処理関数 function check() { var nameTXT = document.formMerchandise.name.value; if(trim(nameTXT).match(/ |\s+/)||trim(nameTXT)==""){ alert("商品名を入力してください"); document.formMerchandise.name.focus(); return false; } if(trim(nameTXT)>25){ alert("商品名は25文字までです"); document.formMerchandise.name.focus(); return false; } return true; } ネットを参考にしながらではあるのですが、(1)で自作メソッドを作成し、その中で「受け取った文字の前後にある全角半角スペースを削除して戻す」という処理を実装してみました。半角スペースに関しては期待通りの処理を行えたのですが、全角スペースに関しては削除されず、文字として認識されてしまっています。 例えば (半角スペース) " 商品名 "→"商品名" (全角スペース) " 商品名 "→" 商品名 " となってしまいます。半角スペースが削除されているので後少しとは思うのですが、どなたか教えて頂けないでしょうか?よろしくお願い致します。

専門家に質問してみよう