[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2007/03/29(Thu) 10:33
投稿者名:べた
Eメール:
URL :
タイトル:
文字列の前後からスペース削除
文字列の前後から半角スペース、または、全角スペースを削除して
います。
rtrim、ltrim、trim関数を使えば、前後のスペースは削除されます。
例えば、半角全角スペース混在の場合、どちらかのスペースのみだけを
削除したい場合は、この関数は使えません。両方とも消えてしまいます。
どちらかのスペースのみを削除したい場合、1文字ずつみていくしか
ないのでしょうか。

△△□□・・・□□△△
□△△・・・△□□
△△・・・△△
△△△△△△
□□□

△:半角スペースを示す。
□:全角スペースを示す。

半角スペースのみを削除したい。
全角スペースのみを削除したい。

文字列の全体の長さを求めて、先頭から、または、末尾からループで
1文字ずつ確認していく方法がよいのでしょうか。
VBが提供している関数を組み合わせて1回でできる方法はないでしょうか。
調べてはみたのですが、(調べ方が悪いのかもしれませんが)見つかりません
でした。

環境
 VB6.0
 Windows2000

投稿時間:2007/03/29(Thu) 10:42
投稿者名:matsu
Eメール:
URL :
タイトル:
Re: 文字列の前後からスペース削除
> 文字列の前後から半角スペース、または、全角スペースを削除して
> います。
> rtrim、ltrim、trim関数を使えば、前後のスペースは削除されます。
> 例えば、半角全角スペース混在の場合、どちらかのスペースのみだけを
> 削除したい場合は、この関数は使えません。両方とも消えてしまいます。
> どちらかのスペースのみを削除したい場合、1文字ずつみていくしか
> ないのでしょうか。

Replace関数でできます。

投稿時間:2007/03/29(Thu) 11:18
投稿者名:ささき
Eメール:
URL :
タイトル:
Re^2: 文字列の前後からスペース削除
> Replace関数でできます。

Replace関数で置換しちゃうと、
文字列中の全角スペースまで置換しちゃうので、あまりよろしくないかなぁ〜。

投稿時間:2007/03/29(Thu) 11:53
投稿者名:べた
Eメール:
URL :
タイトル:
Re^3: 文字列の前後からスペース削除
> > Replace関数でできます。
>
> Replace関数で置換しちゃうと、
> 文字列中の全角スペースまで置換しちゃうので、あまりよろしくないかなぁ〜。

ありがとうございます。

Replace関数ですと、文字列中のスペースまで置換してしまいます。
希望としては、前後のみなのです。

投稿時間:2007/03/29(Thu) 12:33
投稿者名:nobu
Eメール:
URL :
タイトル:
Re^4: 文字列の前後からスペース削除
> Replace関数ですと、文字列中のスペースまで置換してしまいます。

こうならない様にする為には下記の様に3ケに分割してから処理すれば?
左側の空白部分 + 前後に空白が無い部分 + 右側の空白部分


下記では文字列の前後に空白がある事を分かるように * と @ を追加してある。

Dim tmp As String
Dim tmp1 As String
Dim tmp_L As String
Dim tmp_R As String
Dim space_L As String
Dim space_R As String


tmp = "     abc  de  fg           "

tmp1 = Trim$(tmp)    '前後の空白を全て削除
tmp_L = RTrim$(tmp)  '右側の空白を削除
tmp_R = LTrim$(tmp)  '左側の空白を削除

Label1.Caption = "*" & tmp & "@"
Label2.Caption = "*" & tmp1 & "@"
Label3.Caption = "*" & tmp_L & "@"
Label4.Caption = "*" & tmp_R & "@"

space_L = Replace(tmp_L, tmp1, "")  '左側の空白部分のみ
space_R = Replace(tmp_R, tmp1, "")  '右側の空白部分のみ

Label5.Caption = "*" & space_L & "@"
Label6.Caption = "*" & space_R & "@"


space_L space_R をそれぞれ半角の空白、全角の空白削除で処理をしてから
適宜文字列結合すると言うのは.....?

投稿時間:2007/03/29(Thu) 17:33
投稿者名:べた
Eメール:
URL :
タイトル:
Re^5: 文字列の前後からスペース削除
ありがとうございます。

> space_L space_R をそれぞれ半角の空白、全角の空白削除で処理をしてから
> 適宜文字列結合すると言うのは.....?
そうですね。
必要な文字列に分解してから結合するのひとつの方法ですね。
ループで1文字ずつ見ていくよりは良いかと思います。

投稿時間:2007/03/29(Thu) 14:20
投稿者名:魔界の仮面弁士
Eメール:
URL :
タイトル:
Re: 文字列の前後からスペース削除
Replace メソッドを使ってみるとか。

  With CreateObject("VBScript.RegExp")
    .Pattern = "^ *(([^ ]+.*)?[^ ])? *$"
    Text2.Text = .Replace(Text1.Text, "$1")
  End With

投稿時間:2007/03/29(Thu) 17:34
投稿者名:べた
Eメール:
URL :
タイトル:
Re^2: 文字列の前後からスペース削除
> Replace メソッドを使ってみるとか。
>
>   With CreateObject("VBScript.RegExp")
>     .Pattern = "^ *(([^ ]+.*)?[^ ])? *$"
>     Text2.Text = .Replace(Text1.Text, "$1")
>   End With

ありがとうございます。
良い方法ですね。
>.Pattern = "^ *(([^ ]+.*)?[^ ])? *$"
のような使い方ができるとは知りませんでした。

これは、メソッドに関した使い方なのでしょうか。