我有在細胞以下字符串:刪除 u00A0字符
我要拆分的字符串轉換成僅包含文本詞(如「CRMNegocios」)的陣列沒有任何子彈,新的生產線,等等
要做到這一點,我已經寫了下面的代碼:
Sub Button1_Click()
Dim stringsToCheck As Variant
Dim element As Variant
Dim stripped As String
'Split cell value per vbLf
stringsToCheck = Split(Cells(42, 10).Value, vbLf)
MsgBox ("Total length of stringsToCheck is " & CStr(UBound(stringsToCheck)))
'Remove special characters - for testing only, it will set the cell with the last value of the array
For Each element In stringsToCheck
stripped = GetStrippedText(CStr(element))
Cells(42, 15) = stripped
Next element
End Sub
Private Function GetStrippedText(txt As String) As String
Dim regEx As Object
Set regEx = CreateObject("vbscript.regexp")
'\u0000-\u007F is for other special characters
regEx.Pattern = "[\u25A0\u00A0\u0000-\u007F]"
GetStrippedText = regEx.Replace(txt, "")
End Function
子彈被刪除(這是\u25A0
)的前pected,但我仍然留下的文字字前\u00A0
字符:
我檢查和regex is matching,爲什麼它沒有在VBA刪除?
正如在評論中提到,在單元格原文:
文本測試細胞,之後■ CRMNegocios
■ GestiondeProyectos
■ Emblue
■ Videoconferencia
代碼運行:
Videoconferencia
對不起,你是否試圖從字符串的開頭刪除這些非字字符?我想你可能只是使用'regEx.Pattern =「^ \ W +」'或者用你的方法'regEx.Pattern =「^ [\ u25A0 \ u00A0 \ s] +」'。請注意,'\ u0000- \ u007F'定義了一個ASCII表格範圍,如果用它來替換,它將從字符串 –
中刪除所有ASCII字母,數字,所有ASCII符號。謝謝@WiktorStribiżew,這確實有效。你能解釋一下[在答案中,所以我可以接受:)]爲什麼我的初始方法在VBA中不匹配?並設置'regEx.Global = True'導致一切都被替換。雖然它在[here](https:// regex101)中似乎是正確的。com/r/KP1tF6/1) - 它應該只是找到特殊字符並刪除它們,爲什麼我必須指定字符串開頭的'^',如果我想要刪除任何地方的特殊字符,會發生什麼?字符串? –
我在下面發佈了一個答案。 –