我想编写一个程序,可以从输入字符串中提取字母字符和特殊字符。字母字符是“a”到“z”(大写字母和数字不包括在内)中的任何字符。特殊字符是不是字母数字的任何其他字符。
示例:
string = hello//this-is-my-string@capetown
alphanumerical characters = hellothisismystringcapetown
special characters = //---@
现在我的问题是:
如何遍历所有字符?
(对于x = 0
到strname.length
,我正在使用这样的for循环...这是正确的吗?
如何将字符提取到字符串?
如何确定特殊字符?
非常感谢任何输入 非常感谢你的时间。
答案 0 :(得分:0)
您可以按如下方式遍历每个字符:
For Each _char As Char In strname
'Code here
Next
或
For x as integer = 0 to strname.length - 1
'Code here
Next
或者您可以使用正则表达式替换字符串中不需要的值(我认为这可能更快,但我不是专家)看看:http://msdn.microsoft.com/en-us/library/xwewhkd1.aspx
修改强>
替换代码看起来如下,虽然我不太确定正则表达式(模式当前只替换数字的变量)是什么:
Dim pattern As String = "(\d+)?" 'You need to update the regular expression here
Dim input As String = "123//hello//this-is-my-string@capetown"
Dim rgx As New Regex(pattern)
Dim result As String = rgx.Replace(input, "")
答案 1 :(得分:0)
由于您需要保留值,因此您需要遍历字符串。保留一个字符列表将会派上用场,因为您可以在以后构建一个新字符串。然后利用简单的Regex测试来确定放置的位置。伪代码看起来像这样。
Dim alphaChars As New List(Of String)
Dim specialChars As New List(Of String)
For Each _char As Char in testString
If Regex.IsMatch(_char, "[a-z]")) Then
alphaChars.Add(_char)
Else
specialChars.Add(_char)
End If
Next
然后如果您需要将结果转储为完整字符串,则只需使用
即可String.Join(String.Empty, alphaChars.ToArray())
请注意,此代码假设除了a-z之外的任何其他内容都被视为特殊字符,因此如果需要,您可以在else子句中执行第二个正则表达式,以类似方式测试特殊字符。这实际上取决于你对输入的控制程度。