相关疑难解决方法(0)

如何从.NET中的字符串中删除变音符号(重音符号)?

我正在尝试转换一些法语加拿大语的字符串,基本上,我希望能够在保留字母的同时取出字母中的法语重音符号.(例如转换ée,所以crème brûlée会变成creme brulee)

实现这一目标的最佳方法是什么?

.net string diacritics

415
推荐指数
13
解决办法
18万
查看次数

有没有办法摆脱重音并将整个字符串转换为普通字母?

是否有更好的方法来摆脱重音并使这些字母与使用String.replaceAll()方法和逐个替换字母分开?例:

输入: or?pžsíáýd

输出: orcpzsiayd

它不需要包括所有带有重音符号的字母,如俄语字母或中文字母.

java string diacritics

236
推荐指数
6
解决办法
13万
查看次数

什么是替换字符串中的许多字符的有效方法?

Java中的字符串处理是我努力学习做得好的事情.目前我想要一个字符串并替换我找到的任何字符.

这是我目前效率低下的(有点愚蠢的IMO)功能.它写的只是工作.

public String convertWord(String word)
{
    return word.toLowerCase().replace('á', 'a')
                             .replace('é', 'e')
                             .replace('í', 'i')
                             .replace('ú', 'u')
                             .replace('ý', 'y')
                             .replace('ð', 'd')
                             .replace('ó', 'o')
                             .replace('ö', 'o')
                             .replaceAll("[-]", "")
                             .replaceAll("[.]", "")
                             .replaceAll("[/]", "")
                             .replaceAll("[æ]", "ae")
                             .replaceAll("[þ]", "th");
}
Run Code Online (Sandbox Code Playgroud)

我运行了1.000.000次,耗时8182ms.那么我应该如何进行更改此功能以提高效率呢?

解决方案:

将函数转换为此函数

public String convertWord(String word)
{
    StringBuilder sb = new StringBuilder();

    char[] charArr = word.toLowerCase().toCharArray();

    for(int i = 0; i < charArr.length; i++)
    {
        // Single character case
        if(charArr[i] == 'á')
        {
            sb.append('a');
        }
        // Char to two characters
        else if(charArr[i] == 'þ') …
Run Code Online (Sandbox Code Playgroud)

java string optimization

26
推荐指数
3
解决办法
2万
查看次数

如何在SQLite查询中忽略重音(Android)

我是Android的新手,我正在使用SQLite进行查询.我的问题是,当我在字符串中使用重音时,例如

  • AAA
  • AAA
  • AAA
  • AAA
  • AAA
  • AAA

如果我做:

SELECT * FROM TB_MOVIE WHERE MOVIE_NAME LIKE '%a%' ORDER BY MOVIE_NAME;
Run Code Online (Sandbox Code Playgroud)

回归:

  • AAA
  • aaa(它忽略了其他人)

但如果我这样做:

SELECT * FROM TB_MOVIE WHERE MOVIE_NAME LIKE '%à%' ORDER BY MOVIE_NAME;
Run Code Online (Sandbox Code Playgroud)

回归:

  • ààà(忽略标题"ÀÀÀ")

我想在SQLite数据库中选择字符串而不关心重音和大小写.请帮忙.

sqlite android diacritics

20
推荐指数
2
解决办法
1万
查看次数

比较忽略重音字符的字符串

我想知道是否有一种方法比较2个字符串并忽略使"noção"等于"nocao"的重音.它会像string1.methodCompareIgnoreAccent(string2);

java string compare accent-insensitive

16
推荐指数
2
解决办法
1万
查看次数

在Android SQLite中使用COLLATE - 在LIKE语句中忽略Locales

在Android中创建SQLite数据库时,我设置了数据库语言环境 - db.setLocale(new Locale("cz_CZ")).这是一个捷克语的地方.

SELECT语句起作用并考虑区域设置,例如:

SELECT * from table WHERE name='sctzy' COLLATE LOCALIZED 
Run Code Online (Sandbox Code Playgroud)

会找到条目'ščťžý'.

但使用LIKE将失败:

SELECT * from table WHERE name LIKE '%sctzy%' COLLATE LOCALIZED 
Run Code Online (Sandbox Code Playgroud)

没有返回任何行.

BTW.Android中没有java.text.Normalized类.我以为我可以用标准化的文本制作第二列,删除特殊字符,这些字符将用于搜索 - 但我缺少一个类或方法如何规范化String.

database sqlite android locale collate

13
推荐指数
1
解决办法
1万
查看次数

比较具有特殊字符的单词时忽略变音字符(é,è,...)

我列出了一些比利时城市的变音字符:(Liège,Quiévrain,Franière等)我希望将这些特殊字符转换为与包含相同名称的大写字母进行比较,但没有变音符号( LIEGE,QUIEVRAIN,FRANIERE)

我首先尝试做的是使用大写:

LIEGE.contentEqual(Liège.toUpperCase())但这不合适,因为大写LiègeLIÈGE和不是LIEGE.

我有一些复杂的想法,比如替换每个角色,但这听起来很愚蠢而且过程很长.

关于如何以聪明的方式做到这一点的任何想法?

java string android replace diacritics

12
推荐指数
3
解决办法
1万
查看次数

在Unicode中查找字形相似的字符?

可以说我有角色Ú,Ù,Ü.所有这些都与英语U字面相似.

是否有一些列表或算法来执行此操作:

  • 鉴于Ú或Ù或Ü返回英语U.
  • 给定英语U,返回所有U相似字符的列表

我不确定所有字体的Unicode字符的代码点是否相同?如果是的话,我想可以有一些简单的方法和有效的方法来做到这一点?

UPDATE

如果你正在使用Ruby,那么有一个可用于unicode的gem 可能会在某些情况下有所帮助.

unicode glyph

12
推荐指数
3
解决办法
6914
查看次数

icu4j西里尔语到拉丁语

我正试图让西里尔语成为拉丁文,所以我可以把它们放在网址中.我使用icu4j transliterator,但它仍然会给出这样奇怪的字符:Vil'ândimaa.它应该更像viljandimaa.当我复制那个网址时,这些字母会变成%..某些东西没用.

有谁知道怎么用icu4j把西里尔语变成az?

UPDATE

不能回答自己,但发现这个问题非常有用:将符号,口音字母转换为英文字母

java transliteration icu

12
推荐指数
1
解决办法
8131
查看次数

如何在java中将"i"与土耳其语匹配?

我想将英语(i)的"I"的小写字母与土耳其语(i)的"İ"的小写字母相匹配.它们是相同的字形,但它们不匹配.当我做System.out.println("?".toLowerCase());字符i和打印点(此网站不能正确显示)

有没有办法匹配那些?(最好没有硬编码)我想让程序匹配与语言和utf代码无关的相同字形.这可能吗?

我测试了规范化没有成功.

public static void main(String... a) {
    String iTurkish = "\u0130";//"?";
    String iEnglish = "I";
    prin(iTurkish);
    prin(iEnglish);
}

private static void prin(String s) {
    System.out.print(s);
    System.out.print(" -  Normalized : " + Normalizer.normalize(s, Normalizer.Form.NFD));
    System.out.print(" - lower case: " + s.toLowerCase());
    System.out.print(" -  Lower case Normalized : " + Normalizer.normalize(s.toLowerCase(), Normalizer.Form.NFD));
    System.out.println();

}
Run Code Online (Sandbox Code Playgroud)

结果未在网站中正确显示,但第一行(iTurkish)仍然具有? 接近小写的i.

目的和问题

这将是一个多语言词典.我希望程序能够识别"İFEL"以"if"开头.为了确保它们不区分大小写,我首先将两个文本转换为小写.İFEL成为i(点)fel并且"if"未被识别为其中的一部分

java unicode normalization unicode-normalization

9
推荐指数
1
解决办法
831
查看次数