String 匹配标点字符

String 匹配标点字符,string,compare,ascii,punctuation,String,Compare,Ascii,Punctuation,我正在寻找一种比较字符串值的方法,其中字符串中的某些字符可能是标点字符,例如é或ô,但是,应该忽略puncuation。例如,当搜索姓名列表时,用户可能会提供标准Rene,该标准应与列表条目Rene和Rene相匹配(即,ASCII 101和233应视为同一事物) 塔克斯 编辑:最好跨所有UNICODE字符。我想人们可以[应该]为此实施一些定制解决方案;我只是想知道是否有一些东西已经存在——几乎像是Char.getBaseCharacterFromSparentedCharacter(Char):

我正在寻找一种比较字符串值的方法,其中字符串中的某些字符可能是标点字符,例如
é
ô
,但是,应该忽略puncuation。例如,当搜索姓名列表时,用户可能会提供标准
Rene
,该标准应与列表条目
Rene
Rene
相匹配(即,ASCII 101和233应视为同一事物)

塔克斯


编辑:最好跨所有UNICODE字符。我想人们可以[应该]为此实施一些定制解决方案;我只是想知道是否有一些东西已经存在——几乎像是
Char.getBaseCharacterFromSparentedCharacter(Char)
:P

你没有说你在使用哪种语言,所以我用java回答。其他语言也有类似的结构。还有,你指的是变音符号,不是(,?!…)

这门课支持比较的力量。例如,对于捷克语来说,变音符号的差异被认为是次要的差异

或者,您可能希望在比较之前通过unicode规范分解(将所有字符分解为基本字母+变音符号)删除任何变音符号,然后通过一个简单的正则表达式删除变音符号(有关组合变音符号中的
说明,请参阅)。在java中:

public static String removeDiacritics(String str) {
  return Normalizer
     .normalize(string, Form.NFD)   // decompose into letters+diacritics
     .replaceAll("\\p{InCombiningDiacriticalMarks}+", ""); // remove diacritics
}

你没有说你用的是哪种语言,所以我用java来回答。其他语言也有类似的结构。还有,你指的是变音符号,不是(,?!…)

这门课支持比较的力量。例如,对于捷克语来说,变音符号的差异被认为是次要的差异

或者,您可能希望在比较之前通过unicode规范分解(将所有字符分解为基本字母+变音符号)删除任何变音符号,然后通过一个简单的正则表达式删除变音符号(有关组合变音符号中的
说明,请参阅)。在java中:

public static String removeDiacritics(String str) {
  return Normalizer
     .normalize(string, Form.NFD)   // decompose into letters+diacritics
     .replaceAll("\\p{InCombiningDiacriticalMarks}+", ""); // remove diacritics
}

呵呵,这里的实际问题是我不知道它叫什么,所以我不知道该找什么。规范化可以工作,但也可以进行直接比较,这两种方法都在这里进行了说明:是的,我上面提到的collator可以在java中与链接到的c#代码进行直接比较。(如果你同意我的回答,你能投赞成票吗?)呵呵,所以这里的实际问题是我不知道它叫什么,所以我不知道该找什么。规范化可以工作,但也可以进行直接比较,这两种方法都在这里进行了说明:是的,我上面提到的collator可以在java中与链接到的c#代码进行直接比较。(如果你同意我的回答,你能投赞成票吗?)