我正在研究一些在将数据发送到另一个系统之前清理数据的软件。数据来自世界各地,包含各种必须替换的字符。例如 ', : ; @
接受解析数据的系统具有非常严格的字符集。它允许 字母A到Z(仅大写) 数字0到9 特殊字符/ - 。空间< =
数据到达Excel电子表格,因此我在visual basic宏中编写了以下代码。
fhl_str包含要清理的数据
fhl_str = Replace(fhl_str, ",", " ")
fhl_str = Replace(fhl_str, "'", " ")
fhl_str = Replace(fhl_str, ":", " ")
fhl_str = Replace(fhl_str, ";", " ")
fhl_str = ucase(fhl_str)
现在,每次有新的不需要的字符到达时,我们都必须添加一行新的代码。例如fhl_str =替换(fhl_str,“@”,“”)
我的问题是 我可以反转逻辑,以便宏查找A到Z和0到9并删除其他任何内容。这样我的代码将成为新的不需要的字符的未来证明。
由于
答案 0 :(得分:1)
如果您发现正则表达式难以理解,这里有一些VBA会这样做。它使用ASCII代码确定允许的唯一字符。如果范围发生变化,您可以修改a,b,forEach
语句中的ASCII数字。
Case
<强>用法:强>
Public Function RemoveSpecial(s As String) As String
Dim sResult As String
Dim nIndex As Integer
s = UCase$(s)
For nIndex = 1 To Len(s)
Select Case Asc(Mid$(s, nIndex, 1))
Case 65 To 90, 45 To 57, 32, 60 To 61
sResult = sResult & Mid$(s, nIndex, 1)
Case Else
sResult = sResult & " "
End Select
Next
RemoveSpecial = sResult
End Function
或类似的东西:
Debug.Print RemoveSpecial("TeSt<>=.@@")
答案 1 :(得分:1)
如果您想用一个空格替换坏字符:
@Component(
selector: 'my-app',
styleUrls: const ['app_component.css'],
templateUrl: 'app_component.html',
directives: const [CORE_DIRECTIVES, materialDirectives, TodoListComponent],
providers: const [materialProviders],
)
class AppComponent {
}