【问题标题】:How to trim database data having multiple spaces?如何修剪具有多个空格的数据库数据?
【发布时间】:2013-12-20 11:19:38
【问题描述】:

我正在从数据库中获取数据,我需要检查用户输入的匹配数据。 不幸的是,由于数据库记录中的空格太多,我没有正确理解它。

_usersinapplicationroles.All().Where(a => a.ApplicationRoleId == iAppRoleId && (Regex.Replace(a.User.DisplayName, @"\s\s+", " ").Trim() == Regex.Replace(strDisplayName, @"\s\s+", " ").Trim())).AsQueryable(); 

上面的表达式是错误的:由于 a.user.DisplayName 之前的正则表达式,找不到 'a'。

请更正此错误。

【问题讨论】:

    标签: c# asp.net linq


    【解决方案1】:

    你能不能试试这个...

    RegexOptions options = RegexOptions.None;
    Regex regex = new Regex(@"[ ]{2,}", options); 
    

    下面替换

    Regex.Replace(strDisplayName, @"\s\s+", " ").
    

    strDisplayName.Replace(strDisplayName, @" ");
    

    【讨论】:

      【解决方案2】:

      要从字符串中删除空格,请使用以下行:

      string yourStringNoSpaces = yourString.Replace(" ", String.Empty);
      

      这样,您将使用:

      _usersinapplicationroles.All().Where(a => a.ApplicationRoleId == iAppRoleId && a.User.DisplayName.Replace(" ", String.Empty) == strDisplayName.Replace(" ", String.Empty)).AsQueryable(); 
      

      以上行是在 LinqPad 中使用简单查询测试的:

      void Main()
      {
          List<Thing> things = new List<Thing>();
          things.Add(new Thing(){
              Name = "test"
          });
      
          string testString = "te st";
      
          var result = things.Where (x => x.Name == testString.Replace(" ", String.Empty)).FirstOrDefault();
      
          Console.WriteLine(result.Name);
      }
      
      class Thing
      {
          public string Name {get;set;}
      }
      

      【讨论】:

      • @user3106578 你有哪个错误?我用一个例子更新了答案。
      • 名称本身在数据库中有很多空格。我需要避免代码中的数据库数据空格。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多