我想创建一个包含当前用户可以在键盘上输入的所有字符的字符串。对于说英语的用户来说,这将是26个大写字母、26个小写字母、10个十进制数字和30多个符号。其他国家的用户会有一些不同的字符。
我知道有一些用户可以输入不在他们键盘上的字符,但我不能假设他们知道如何做到这一点。我正在寻找一个字符集,可以合理地假定任何具有当前文化背景的人都能够输入。如果该集合缺少一两个特殊字符,也不是世界末日,但我希望它足够完整。
我可以通过硬编码或使用以下函数快速获取美式英语字符集:
我知道有一些用户可以输入不在他们键盘上的字符,但我不能假设他们知道如何做到这一点。我正在寻找一个字符集,可以合理地假定任何具有当前文化背景的人都能够输入。如果该集合缺少一两个特殊字符,也不是世界末日,但我希望它足够完整。
我可以通过硬编码或使用以下函数快速获取美式英语字符集:
Function GetCharacterSet() As String
Return Enumerable.Range(32, 95).Select(Function(i) Chr(i)).ToArray
End Function
我不确定如何在其他文化中可靠地完成这个任务。我可以像这样编写函数:
Function GetCharacterSet() As String
Dim chars As New List(Of Char)
For i As Integer = 0 To UInt16.MaxValue
Dim ch As Char = ChrW(i)
If Char.IsLetterOrDigit(ch) OrElse Char.IsPunctuation(ch) OrElse ch = " "c Then
chars.Add(ch)
End If
Next
Return chars.ToArray
End Function
但是生成的(非常长的)字符串包含任何文化中有效的字符。有没有一种方法只检查当前文化中的字母、数字或标点符号?