- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
此算法设置为遍历第一个单词或直到它填满四个编码字符串。例如,输入“Horrible Great”的结果是:H612。它忽略了第二个单词,换句话说,它只用第二个单词的第一个字母来填充编码字符串。
我想通过获取第一个单词并找到其编码字符串然后获取第二个单词并找到其编码字符串来更改它;输出应为“H614 G600”。我想知道是否有办法通过对**此代码进行一些更改来做到这一点。
非常感谢:)
private string Soundex(string data)
{
StringBuilder result = new StringBuilder();
if (data != null && data.Length > 0)
{
string previousCode = "", currentCode = "", currentLetter = "";
result.Append(data.Substring(0, 1));
for (int i = 1; i < data.Length; i++)
{
currentLetter = data.Substring(i,1).ToLower();
currentCode = "";
if ("bfpv".IndexOf(currentLetter) > -1)
currentCode = "1";
else if ("cgjkqsxz".IndexOf(currentLetter) > -1)
currentCode = "2";
else if ("dt".IndexOf(currentLetter) > -1)
currentCode = "3";
else if (currentLetter == "l")
currentCode = "4";
else if ("mn".IndexOf(currentLetter) > -1)
currentCode = "5";
else if (currentLetter == "r")
currentCode = "6";
if (currentCode != previousCode)
result.Append(currentCode);
if (result.Length == 4) break;
if (currentCode != "")
previousCode = currentCode;
}
}
if (result.Length < 4)
result.Append(new String('0', 4 - result.Length));
return result.ToString().ToUpper();
}
最佳答案
当然,这是我想出的解决方案。我用另一种拆分字符串并调用原始方法的方法包装了现有算法。要使用它,您可以调用 SoundexByWord("Horrible Great") 而不是调用 Soundex("Horrible Great") 并获得“H614 G630”的输出。
private string SoundexByWord(string data)
{
var soundexes = new List<string>();
foreach(var str in data.Split(' ')){
soundexes.Add(Soundex(str));
}
#if Net35OrLower
// string.Join in .Net 3.5 and before require the second parameter to be an array.
return string.Join(" ", soundexes.ToArray());
#endif
// string.Join in .Net 4 has an overload that takes IEnumerable<string>
return string.Join(" ", soundexes);
}
关于c# - Soundex 算法的一些变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7652253/
您好,我想在 SQL Server 上使用 Soundex。我找到了 MySQL 的好例子: SELECT SOUNDEX('game of thrones') 当我尝试这个查询时: MySQL 返回
例如。 Soundex算法针对英语进行了优化。是否有更通用的算法可应用于多种语言? 最佳答案 SOUNDEX确实是面向英语的。另外两个需要考虑更多语音差异的地方是:Double Metaphone和N
我正在对用户表执行 soundex 查询。用户的子查询以逗号分隔的字符串列表的形式提供。 我想做类似于以下的事情,但我找不到执行此操作的写入语法。 select * from ((Select sou
此算法设置为遍历第一个单词或直到它填满四个编码字符串。例如,输入“Horrible Great”的结果是:H612。它忽略了第二个单词,换句话说,它只用第二个单词的第一个字母来填充编码字符串。 我想通
我正在尝试使用全文搜索和 SOUNDEX 实现名字和姓氏搜索(以防名字拼写错误)。 我正在尝试做类似的事情 SELECT * FROM employees WHERE MATCH SO
我刚刚编写了这个名为 compute 的函数,它接受一个字符串并将其转换为一个 soundex 值。但是,当我调用该函数时,它给我一个错误,提示 Cannot convert value of typ
Soundex 似乎已在某些 DBMS 中实现,但是否有任何算法改进明显优于当前的 Soundex 实现? 最佳答案 是的。作为Wikipedia指出,还有 Metaphone 和 Double Me
我试图通过计算每个字符串的变音位键在大量名称列表中找到接近的重复项,然后在每组可能的重复项中,使用 Levenshtein 距离之类的东西来更精确地估计重复可能性.1 但是,我发现变音位在很大程度上取
我所在的组织存在严重的名称数据质量问题。有十五个数据库包含有关人员的信息。例如: Database 1 Name=Fre&d Blo-ggs DOB 01/01/1980 Database 2 Nam
如何获得用一种语言编写的字符串与另一种语言编写的另一个字符串的声音相似性“评级”:即可以识别该字符串的算法 “David Letterman”和“דוד לטרמן”是听起来相似的字符串。 -哦,是的
我所在的组织存在严重的名称数据质量问题。有十五个数据库包含有关人员的信息。例如: Database 1 Name=Fre&d Blo-ggs DOB 01/01/1980 Database 2 Nam
我有一个数据库表,其中有一列 SQLServer Soundex 编码的姓氏 + 名字。 在我的 C# 程序中,我想使用 soundex 转换字符串以在我的查询中使用。 dotnet 库中是否有用于
我的应用程序将提供“听起来像”给定键入名称的英文名称建议列表。 需要优化查询并尽快返回结果。哪个选项最适合快速返回结果。 (或者你自己的建议,如果你有的话) 一个。生成 Soundex 哈希并将其存储
我有一个将单词转换为 soundex 值的函数,但它返回所有字母为 0。我的姓氏 Smith 应该是 S530 ,但返回 S000 ,例如。 代码链接(因为太长,无法放在这里):http://past
我的学生表 stu_table 在字段 stu_name 中包含许多不同的学生姓名,但大多数听起来相似。 例如: Mrinmoy, Minmay, Mrinmay, Minmoy, Tanmoy ,T
有人可以解释一下如何使用 SOUNDEX (mysql/php) 来匹配多个单词吗?我正在尝试制作一个简单的站内广告系统。 我有一个包含“ad_id”和“keywords”列的表,以及另一个包含“pa
您好,在深入了解 soundex 之前,想快速提问。 1 - 表格[标题]中的字段包含一个“包含我正在寻找的单词的句子” 问 - 是否有简单的方法使用 sundex 来匹配 WORD? 最佳答案 SO
美国人口普查局使用一种称为“soundex”的特殊编码来查找有关个人的信息。 soundex 是一种基于姓氏发音而不是拼写方式的姓氏(姓氏)编码。发音相同但拼写不同的姓氏,如 SMITH 和 SMYT
过去几天我一直在研究 soundex、metaphone 和其他字符串搜索技术,据我所知,这两种算法在处理音译为英语的非英语单词时效果很好。 然而,我的要求是这样的搜索可以在原始的、未音译的语言中工作
请帮我用java实现字符串相似度比较!使用 org.apache.commons.codec.language.Soundex 库 Soundex soundex = new Soundex(); S
我是一名优秀的程序员,十分优秀!