我需要将2个字符串比较为相等,如下所示:
吕贝克==吕贝克
在JavaScript中.
为什么?好吧,我有一个自动完成字段,使用Lucene进行Java服务,其中地名自然存储(如Lübeck),但也被索引为规范化文本,
import sun.text.Normalizer;
oDoc.setNameLC = Normalizer.normalize(oLocName, Normalizer.DECOMP, 0)
.toLowerCase().replaceAll("[^\\p{ASCII}]","");
Run Code Online (Sandbox Code Playgroud)
这样一来,一个不知道输入"Mèxico"的人可以输入"墨西哥"并得到一个返回"Mèxico"的比赛(在很多其他可能的点击中,如"CaféMèxico,Dubai,UAE").
现在问题是我没有能力更改服务以在服务器端进行任何突出显示,因此我在客户端JavaScript方面突出显示如下内容:
return result.replace( input.replace(/[aeiou]/g,"."), "<b>$1</b>");
Run Code Online (Sandbox Code Playgroud)
这有点花哨,因为我在输入中转义了特殊的正则表达式字符.这对于点击开头的简单单词匹配很好,但是如果你突然希望支持像"london cafe"这样的多字匹配,它真的会崩溃:
input = input.strip().toLowerCase(); //fyi prototype's strip is like trim
re = new RegEx(input.replace(/[aeiou]/g,".").replace(/\s+/g,"|"),"gi");
return result.replace(re, "<b>$1</b>");
Run Code Online (Sandbox Code Playgroud)
这不适用于说"伦敦ca"(正在输入伦敦咖啡馆),因为它会将"Jack London Cabin,Dawson City,Canada"标记为:"Ja<b>ck</b> <b>London</b> <b>ca</b>bin, Dawson <b>Ci</b>ty, <b>Ca<b/>nada"[注意"ck"和"Ci"特别]
因此,我有点像寻找一些不那么疯狂的东西:
input = input.strip().toLowerCase();
input = input.replace(/a/g,"[ÀàÁáÂâÃãÄäÅ寿??????]");
input = input.replace(/e/g,"[ÈèÉéÊêËë??????????]");
// ditto for i, o, u, y, c, n, maybe also d, g, h, j, k, l, r, s, t, w, z
re …Run Code Online (Sandbox Code Playgroud) javascript unicode normalization accent-insensitive text-normalization
PostgreSQL有一个简单的忽略大小写比较吗?
我想替换:
SELECT id, user_name
FROM users
WHERE lower(email) IN (lower('adamB@a.com'), lower('eveA@b.com'));
Run Code Online (Sandbox Code Playgroud)
有类似的东西:
SELECT id, user_name
FROM users
WHERE email IGNORE_CASE_IN ('adamB@a.com', 'eveA@b.com');
Run Code Online (Sandbox Code Playgroud)
在like与ilike单值(例如运营商的工作like 'adamB@a.com'),但不是套.
我们有一个系统,客户,主要是欧洲输入文本(UTF-8),必须分发到不同的系统,大多数接受UTF-8,但现在我们还必须将文本分发给只接受美国的美国系统. -Ascii 7位
所以现在我们需要将所有欧洲字符翻译成最近的US-Ascii.是否有任何Java库可以帮助完成此任务?
现在我们刚刚开始添加到翻译表,其中Å(瑞典AA) - > A等等,如果我们找不到输入字符的任何匹配项,我们将记录并替换为问号并试着为下一个版本修复它,但它似乎非常低效,而其他人必须先做过类似的事情.
我刚刚编制了一个包含100万个地名的数据库.我将在一个自动完成的小部件中使用它来查找城市.很多这些地方都有重音......当用户输入没有重音的名字时,我希望能够找到记录.
为了做到这一点,我得到了第二列,其中包含名称的非重音副本.其中许多记录仍然是空白的,所以我想编写一个查询来填充它们.这是否可以直接在MySQL中进行?如果是这样,怎么样?
有一个非常类似的问题.其中一个解决方案使用如下代码:
string.mb_chars.normalize(:kd).gsub(/[^x00-\x7F]/n, '').to_s
Run Code Online (Sandbox Code Playgroud)
这会产生奇迹,直到你注意到它还会移除空格,圆点,破折号以及谁知道还有什么.
我不是很确定第一个代码是如何工作的,但它是否可以仅剥离重音符号?或至少给出一个保留的字符列表?我对regexps的了解很少,但我尝试过(无济于事):
/[^\-x00-\x7F]/n # So it would leave the dash alone
Run Code Online (Sandbox Code Playgroud)
我要做这样的事情:
string.mb_chars.normalize(:kd).gsub('-', '__DASH__').gsub
(/[^x00-\x7F]/n, '').gsub('__DASH__', '-').to_s
Run Code Online (Sandbox Code Playgroud)
残暴?是...
我也尝试过:
iconv = Iconv.new('UTF-8', 'US-ASCII//TRANSLIT') # Also tried ISO-8859-1
iconv.iconv 'Café' # Throws an error: Iconv::IllegalSequence: "é"
Run Code Online (Sandbox Code Playgroud)
请帮忙?
在ruby中音译非英语字符的最简单方法是什么.那是转换,例如:
translit "Gévry"
#=> "Gevry"
我正在使用permalink_fu插件来创建标题的永久链接.我的问题是:如果标题包含德语字符,它们只是替换为'_'.
我需要的是用oeö与ae取代ä的东西
我知道String.tr但这里的问题是它用1个替换替换1个字符,所以它可以用于替换
é与eøwitho
等等
有没有人有一个漂亮而干净的解决方案呢?
谢谢
有没有办法使用Java将ANSI字符串转换为UTF.
我有一个自定义序列化程序,它使用DataInputStream类的readUTF和writeUTF方法来反序列化和序列化字符串.如果我收到一个用ANSI编码的字符串太长,大约100000个字符我得到错误;
引起:java.io.UTFDataFormatException:编码的字符串太长:106958字节
然而,在我的Junit测试中,我能够创建一个120000'a的字符串,它完美无缺
我检查过以下帖子但仍有错误;
还有更好的选择吗?
name.gsub('è','e').gsub('à','a').gsub('ò','o').gsub('ì','i').gsub('ù','u')
Run Code Online (Sandbox Code Playgroud)
谢谢
我需要删除重音符号或"ñ"Ruby 中的拉丁字符。我尝试使用,force_encoding('UTF-8')但是没有用。
def replace_characters(name)
name.downcase.tr('àáäâãèéë?êìíïî?òóöôõùúüû?ñç ', 'aaaaaeeeeeiiiiiooooouuuuunc-')
end
Run Code Online (Sandbox Code Playgroud)
我想替换正常字符的特殊字符但保留大小写.
示例及其预期产出:
目前,它正在替换正常,但始终将字符串更改为小写.例如:/IMG_4834.JPG - > /img_4834.jpg
ruby ×6
utf-8 ×3
diacritics ×2
java ×2
string ×2
ansi ×1
ascii ×1
javascript ×1
mysql ×1
postgresql ×1
replace ×1
seo ×1
sql ×1
translate ×1
unicode ×1