Board logo

標題: [發問] 求助: 做正則在數字與文字或文字與數字之間插入空格。 [打印本頁]

作者: ikboy    時間: 2015-12-25 23:05     標題: 求助: 做正則在數字與文字或文字與數字之間插入空格。

[attach]22980[/attach]
將錯誤的 - I am 18years old and weight50 Kgs.
更正為 - I am 18 years old and weight 50 Kgs.
如何能寫成一個 Pattern, 目前我是寫成兩個 "(\d)([a-zA-Z])" 和 "([a-zA-Z])(\d)", 做兩次循環。
請老師幫忙。
作者: ikboy    時間: 2015-12-28 10:17

自己解決了, 分享一下:

Sub zz()
Dim arr, rx As Object, c$
Set rx = CreateObject("vbscript.regexp")
arr = ActiveSheet.UsedRange
With rx
    .Pattern = "((d|[A-z])|([A-z]|d))(\d)"
    .Global = True
    For i = 1 To UBound(arr)
        arr(i, 1) = .Replace(arr(i, 1), "$1 $2")
    Next
End With
ActiveSheet.UsedRange = arr
End Sub
作者: stillfish00    時間: 2015-12-28 10:58

回復 2# ikboy
原本分兩次做就好了,改成2#這樣反而會錯。

如果要一次達成,建議改成這樣 :
  1. With rx
  2.     .Pattern = "(\d(?=[a-zA-Z])|[a-zA-Z](?=\d))"
  3.     .Global = True
  4.     For i = 1 To UBound(arr)
  5.         arr(i, 1) = .Replace(arr(i, 1), "$1 ")
  6.     Next
  7. End With
複製代碼

作者: ikboy    時間: 2015-12-28 13:02

多謝stillfish00,思路正確, 更正了




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)