我有一个由字母,数字和标点符号组成的Unicode字符串。我可以使用C ++标准库或Win32 API检测数字和字母(不一定是ASCII)的字符吗?
答案 0 :(得分:12)
iswdigit(), iswalpha(), iswalnum()是您要查找的功能。
干杯!
答案 1 :(得分:5)
另一个选项是Win32 API调用GetStringTypeW()
答案 2 :(得分:4)
我推荐ICU库。它拥有所有Unicode数据,以及适合C ++的Unicode字符串类。
答案 3 :(得分:2)
This Microsoft documentation page在正则表达式中描述了“Unicode字符类”,这听起来非常相关。我认为答案是在.Net领域,而不是纯粹的Win32 C ++,但也许你可以挖掘一些东西。
答案 4 :(得分:1)
Private Declare Function GetStringTypeW Lib "Kernel32" (ByVal InfoType As Long, Text As Byte, ByVal Length As Long, Types As Integer) As Long
...
Dim S As String, B() As Byte, C() As Integer, L as Long
L = Len(S)
ReDim C(1 To L)
B = S
If GetStringTypeW(1, B(0), L, C(1)) Then
'Character classes are in C.
Else
'Something went wrong. Deal with it or call Err.Raise.
End If