How to know if a string contains accents

后端 未结 3 1930
温柔的废话
温柔的废话 2021-01-18 00:09

How to know if a string contains accents?

3条回答
  •  孤城傲影
    2021-01-18 00:34

    I think the best thing you can do is using a normalizer that splits unicode characters with accents into two separate character. Java includes this in class Normalizer, see here.

    This, for example, will split

    U+00C1    LATIN CAPITAL LETTER A WITH ACUTE
    

    into

    U+0041    LATIN CAPITAL LETTER A
    U+0301    COMBINING ACUTE ACCENT
    

    and will do this for every character that has accents or other diacritical mark (http://en.wikipedia.org/wiki/Diacritic).

    Then you can check if the resulting CharSequence has some of the accents character (and this will imply hard coding them) or simply check if the normalized version is equal to the starting one, this will imply that there isn't any character that has been decomposed. Java Normalizer already has this facility in isNormalized(CharSequence src, Normalizer.Form form), but you should check the various forms available to see if there's one suitable for your needs.

    EDIT: if you just need basic accent supports (like just è é à ò ì ù) you can just go with oedo option, if you need full support for all the existing accents it would be crazy to hard code them all..

提交回复
热议问题