作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想知道.net中是否存在一种比较包含é等字母的字符串的方法。
示例:我正在搜索一个说José的字符串。当我检查字符串José是否包含“e”时(在无指责的情况下),我想返回true
有没有一种方法可以不手动比较不同字符的所有变体?
有任何想法吗?
最佳答案
您首先必须以某种方式定义变音符号。不要列出所有字符;而是使用Unicode类别。仅考虑两种或三种组合标记。
例如,您可能只想检测不影响基本字符宽度的组合标记(“非间距标记”)。或者,您可能会更加自由一些,甚至包含一些不能单独使用的标记,但是如果存在,它们仍会占用一些空间;像印度语脚本中的元音标记。所有三种组合标记将按以下方式检测:
Private Shared Function HasDiacritics(input As String) As Boolean
Dim uncombined As String = input.Normalize(NormalizationForm.FormD)
For i As Integer = 0 To uncombined.Length - 1
Dim uc As UnicodeCategory =
CharUnicodeInfo.GetUnicodeCategory(uncombined(i))
If uc = UnicodeCategory.NonSpacingMark
Or uc = UnicodeCategory.SpacingCombiningMark
Or uc = UnicodeCategory.EnclosingMark
Then
Return True
End If
Next
Return False
End Function
é
)分解为
e
和
'
,然后再逐字符查看字符串。
Private Shared Function HasChar(input As String, c as Char) As Boolean
Dim uncombined As String = input.Normalize(NormalizationForm.FormD)
For i As Integer = 0 To uncombined.Length - 1
If uncombined(i) = c Then Return True End If
Next
Return False
End Function
关于vb.net - 搜索特殊字符(例如accute等)的变体时比较字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11615642/
我是一名优秀的程序员,十分优秀!