Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.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# 如何实现像驼峰一样的重竖琴匹配?_C# - Fatal编程技术网

C# 如何实现像驼峰一样的重竖琴匹配?

C# 如何实现像驼峰一样的重竖琴匹配?,c#,C#,如何实现像驼峰一样的重竖琴匹配 我已经开始了: 注意:这张图片显示了用空格分隔的单词,但我编写的算法也可以在单词从小写转换为大写时(通过添加空格)对驼峰进行分割。它还可以用空格替换下划线 到目前为止,我使用了评级算法来确定匹配的顺序 但基本上我的只限于完全匹配、第一个字符匹配或子字符串匹配 我认为resharper还允许更有趣的事情,只是想知道是否有任何已知的有用算法用于这种匹配 /// <summary> /// This returns how good of a

如何实现像驼峰一样的重竖琴匹配

我已经开始了:

注意:这张图片显示了用空格分隔的单词,但我编写的算法也可以在单词从小写转换为大写时(通过添加空格)对驼峰进行分割。它还可以用空格替换下划线

到目前为止,我使用了评级算法来确定匹配的顺序

但基本上我的只限于完全匹配、第一个字符匹配或子字符串匹配

我认为resharper还允许更有趣的事情,只是想知道是否有任何已知的有用算法用于这种匹配

   /// <summary>
   /// This returns how good of a match something is using camelhumps.
   /// 0 = not a match
   /// 1 = exact match
   /// 2 = exact match no whitespace
   /// 3 = camel humps match on first character
   /// 4 = substring
   /// </summary>
   /// <returns></returns>
   private int GetMatchRanking( string value, string filter )
   {
      if ( filter.ToLower() == value.ToLower() ) return 1;
      if ( filter.RemoveAllWhitespace().ToLower() == value.RemoveAllWhitespace().ToLower() ) return 2;
      // Camel matching on first letters only: touch last changeset ==> tlc
      if ( filter.ToLower() == GetFirstLettersForFiltering( value ) ) return 3;
      if ( value.ToLower().Contains( filter.ToLower() ) ) return 4;
      return 0;
   }

   // Define other methods and classes here
   public List<string> CamelSplit( string s )
   {
      string text = Regex.Replace( s, @"([a-z])([A-Z])", "$1 $2" );
      text = text.Replace( "_", " " ).Trim().ToLower();
      return text.Split( " ".ToCharArray(), StringSplitOptions.RemoveEmptyEntries ).ToList();
   }

   public string GetFirstLetters( List<string> strings )
   {
      return string.Join( "", strings.Select( s => s.Substring( 0, 1 ) ) );
   }

   public string GetFirstLettersForFiltering( string s )
   {
      string letters = GetFirstLetters( CamelSplit( s ) );
      if( letters.Length <= 1 || letters.Contains( "<" ) ) return null;
      return letters;
   }
//
///这将返回某个对象使用驼峰的匹配程度。
///0=不匹配
///1=精确匹配
///2=完全匹配无空格
///3=第一个字符上的驼峰匹配
///4=子字符串
/// 
/// 
私有int GetMatchRanking(字符串值、字符串筛选器)
{
if(filter.ToLower()==value.ToLower())返回1;
if(filter.RemoveAllWhitespace().ToLower()==value.RemoveAllWhitespace().ToLower())返回2;
//仅首字母骆驼匹配:触摸最后更改集==>tlc
if(filter.ToLower()==GetFirstLettersForFiltering(value))返回3;
if(value.ToLower().Contains(filter.ToLower())返回4;
返回0;
}
//在此处定义其他方法和类
公共列表拆分(字符串s)
{
字符串text=Regex.Replace(s,@“([a-z])([a-z])”,“$1$2”);
text=text.Replace(““,”).Trim().ToLower();
返回text.Split(“.ToCharArray(),StringSplitOptions.RemoveEmptyEntries).ToList();
}
公共字符串GetFirstLetters(列表字符串)
{
返回string.Join(“,strings.Select(s=>s.Substring(0,1));
}
公共字符串GetFirstLettersForFiltering(字符串s)
{
字符串字母=GetFirstLetters(CamelSplit);

如果(letters.Length)我想你可以在你的项目中尝试lucene.net:我想你可以在你的项目中尝试lucene.net: