空白文字の置換についてです。
文字列の前、後ろの空白はTRIMなどで削除できるのですが
文字列中の空白を削除・置換するにはどうすればいいのでしょうか?
△が空白です。
文字列 ABC△△△△△DEF△△GHI
で△(空白)が3個以上あった場合のみ三個の△を1個に置換したいんです。
何か関数があるんでしょうか?
ご教授お願いします。
空白ですが、動的でいくつあるかはわかりません。
2個の場合はそのままですが、3個の場合も19個の場合も
1個に変換したいです。
よろしくお願いします。
Replace関数ではダメですか?
3個を1個に置き換えるなら
Replace(文字列,"△△△","△")
とか。
適当なサンプルですが・・・。
strWKに空白がある文字列が、
strWK2には空白が消えた文字列が入ります。
if文の所はANDで条件をくっつけても大丈夫です。
Dim strWK As String
Dim strWK2 As String
Dim i As Integer
strWK = "ABC△△DEF△△△GHI"
strWK2 = ""
'1文字目から最後の文字まで見ていきます。
For i = 1 To Len(strWK) Step 1
'空白でなければWK2に入れる
If Mid(strWK, i, 1) <> "△" Then
strWK2 = strWK2 & Mid(strWK, i, 1)
Else
'前回WK2に入ったのが△でなければWK2に入れる。
If Right(strWK2, 1) <> "△" Then
strWK2 = strWK2 & Mid(strWK, i, 1)
End If
End If
Next i
Text1.Text = strWK2
サンプルコードです。
---------------------------------------
Dim strArray() As String
Dim intCount As Integer
a = Split("1△2△△3△△△4△△△△5△△△△△6", " ")
For intCount = 0 To UBound(strArray)
strArray(intCount) = Trim(strArray(intCount))
Next
Debug.Print Join(strArray)
出力結果:
"1△2△△3△4△5△6"
ごめんなさい、3行目まちがってます。
誤:a = Split("1△2△△3△△△4△△△△5△△△△△6", " ")
正:strArray = Split("1△2△△3△△△4△△△△5△△△△△6", " ")
N_F_A_Aさま
tomさま
もかちさま
たくさんご教授本当にありがとうございます。
N_F_A_AさまのReplace関数は3個の場合は1個になりますが、
動的でいくつ"△"があるかわからないので、Replace文をたくさんかいてみたりしましたが、
いくつかいても解決しませんでした
tomさまともかちさまのサンプルのコードを実行してみました所、うまく動的に△が3個以上の場合のみ
1個になりました。それぞれサンプルのコードがちがっていたので、とても勉強になりました。
遅い時間に本当にありがとうございました。
またみかけましたらよろしくお願いします。
ありがとうございました。
> tomさん
複数の空白(1個も2個も3つ以上も)が一つになるだけだと思いますが…。
> もかちさん
6個以上あった時は空白2つ以上になってしまいます。
Dim sBuff$, sData As String
Dim lCnt As Long
sBuff = "1 2 3 4 5 6 7 8 "
Do Until (Len(sBuff) = 0)
If Left$(sBuff, 1) = " " Then
sData = sData & " "
lCnt = lCnt + 1
If lCnt > 2 Then
sData = RTrim$(sData) & " "
End If
Else
sData = sData & Left$(sBuff, 1)
lCnt = 0
End If
sBuff = Mid$(sBuff, 2)
Loop
Debug.Print sData
あ゛・・・。
本当だ・・・。
すみません、よく読んでませんでした。