- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
是否可以在不退回到正则表达式的情况下使用 ICU 完成?
目前我规范化文件名是这样的:
protected function normalizeFilename($filename)
{
$transliterator = Transliterator::createFromRules(
'Any-Latin; Latin-ASCII; [:Punctuation:] Remove;'
);
$filename = $transliterator->transliterate($filename);
$filename = preg_replace('/[^A-Za-z0-9_]/', '', $filename);
return $filename;
}
我可以在这里摆脱正则表达式并通过 ICU 调用完成所有操作吗?
最佳答案
我认为您现在所做的没有任何问题。
ICU 音译首先是面向语言的。它试图保留意义。
另一方面,正则表达式可以详细操作字符,让您确信文件名仅限于所选字符。
在这种情况下,组合是完美的。
当然,我已经为您的问题寻找解决方案。但老实说,我找不到适用于所有可能输入的东西。
例如,不是所有的字符,我们认为是标点符号,都被[:Punctuation:] Remove;
删除。试试俄语名称:Корнильев, Кирилл
。应用您的 id
后,它将变为:Kornilʹev Kirill
。显然这不是标点符号,但您不希望它出现在您的文件名中。
所以我建议使用正确的工具来完成工作:
Latin-ASCII;
作为 id
即可。漂亮而简单。这真的没有错。
PS:我个人认为编写 ICU 用户指南的人不应因工作出色而受到称赞。真是一团糟。
关于php - ICU:音译然后删除所有非字母数字字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25908610/
有没有办法让音译在 Emacs 中工作,就像现在在 Gmail 中一样?我特别有兴趣让它在西里尔文中工作。 作为引用,Gmail 执行以下操作:我可以输入svoboda,它会输出свобода。这允许
ruby中非英文字符的音译最简单的方法是什么。即转换如: 翻译“Gévry” #=> "Gevry" 最佳答案 Ruby 有一个 Iconv其 stdlib 中的库以与通常的 iconv 命令非常相似
ruby 1.9.3 警告 iconv 弃用,但我使用 iconv 删除变音符号以从 Iconv.iconv('asccii//translit', 'utf-8', 'Těžiště') 返回 Te
在 Ruby on Rails 中,您可以轻松地将“任何”文本转换为适用于子域/路径名的格式。 1) "I am nobody." -> "i-am-nobody" 2) "Grünkohl is a
我想将西里尔文字符串音译成最接近的拉丁文等价物。例如。 “матрешка”=> “matreshka”,“водка”=> “伏特加”。所以理想情况下,我希望在 NSString 或其他已经了解字母
以下是将 Google Transliteration 代码集成到 ASP.Net Pages 中的示例代码(随处可用)。 但我的问题是,如何在将在运行时生成的文本框中启用音译?此脚本需要文本框的 I
我正在使用 Java Swing 开发一个音译项目。它可以访问互联网,但我无法设置它。我们该怎么做?我们需要下载 Google API 库还是只需要一个函数调用就可以了? 这里有一些有用的音译链接:
在我们的 RoR 项目中,我们使用 postgres unaccent 函数来检索我们模型名称属性之一的非重音版本。 name 属性可以包含来自各种语言的任何重音字符。然后我们将其保存为 unacce
如何在我的 Java 应用程序中使用 Google Transliteration API。 如果我给一个String(英语或阿拉伯语)作为输入,Google Transliterator API 应
我正在做一个基于泰米尔语的 Web 应用程序。在我的应用程序中,我使用动态字段来添加用户详细信息。那么,动态字段有多个 ID 如何做到这一点或如何使用基于类的 Google 音译? // Lo
我有一个字符串对象 “有多个字符甚至特殊字符” 我正在尝试使用 UTF8Encoding utf8 = new UTF8Encoding(); ASCIIEncoding ascii = new AS
我使用过“Google AJAX Transliteration API”,它对我来说很顺利。 http://code.google.com/apis/ajaxlanguage/documentati
我是一名优秀的程序员,十分优秀!