Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在.Net中为整个句子实现soundex_C#_.net_Regex_String_Soundex - Fatal编程技术网

C# 在.Net中为整个句子实现soundex

C# 在.Net中为整个句子实现soundex,c#,.net,regex,string,soundex,C#,.net,Regex,String,Soundex,我有一个regex/soundex类型的方法: public static string SoundEx(string word) { if (word.All(char.IsDigit)) { //sentenceParts = words; return word; } word = word.ToUpper(); word = word[0] + Regex.Replace( R

我有一个regex/soundex类型的方法:

public static string SoundEx(string word)
{
    if (word.All(char.IsDigit))
    {
        //sentenceParts = words;
        return word;
    }
    word = word.ToUpper();
    word = word[0] +
        Regex.Replace(
            Regex.Replace(
            Regex.Replace(
            Regex.Replace(
            Regex.Replace(
            Regex.Replace(
            Regex.Replace(word.Substring(1), "[AEIOUYHW]", ""), "[BFPV]+", "1"), "[CGJKQSXZ]+", "2"), "[DT]+", "3"), "[L]+", "4"), "[MN]+", "5"), "[R]+", "6");

    return word;//word.PadRight(4, '0').Substring(0, 4);
}
这在只有一个单词的字符串上效果很好,但一旦你在其中抛出一个句子,它就会开始表现得很有趣

“那只棕色的大猫。” 和 “那只棕色的大狗。”


作为对手出现。现在我知道它保留了第一个单词的第一个字符,然后开始使用正则表达式将数字与元音匹配,等等。但是我如何在整个句子中实现这一点,使其更准确?

您必须分别对每个单词发声。这将把句子转换成一组4字节的代码,而不是字符串。然后将这些集合相互比较

因此,您的示例变成“T000 B200 B650 D200”v“T000 B200 B650 C300”


我建议使用双变音算法而不是soundex,因为它更好,它也不依赖于第一个字母保持不变,这无助于匹配诸如钓鱼和钓鱼之类的单词。

它应该做什么?在“测验”中回答问题,并在出现小拼写错误时使用soundex。它适用于单个单词,如:Retroactive vs.Ritroactive将返回匹配,但Retroactive vs Metroactive将不返回匹配等。我仍然不明白。追溯返回的是什么?匹配是什么意思?您的示例的结果与“t1216523”和“t1216532”不同。是的,我使用了您的代码。看起来你只是在做第一个单词,而不是整个句子。谢谢你提供的信息。我将研究双变音算法。这是可以在.net中实现的吗?@VinnyGuitara很容易,这是一个更复杂的算法,但没有什么不可能理解的,很可能已经有库为您提供了。