gpt4 book ai didi

c# - 字符串比较 ==,当它忽略空格时

转载 作者:太空狗 更新时间:2023-10-30 00:32:10 25 4
gpt4 key购买 nike

我的 asp.net mvc web 应用程序中有以下方法,用于检查 ip 地址是否已存在:-

public bool ISTMSIPUnique(string ip, int? id=0) 
{
var technology = FindTechnology(id.Value);
var result = tms.TechnologyIPs.Where(a.IPAddress.ToUpper() == ip.ToUpper());
return (result.Count() == 0);
}

但我注意到 a.IPAddress.ToUpper() == ip.ToUpper() 将执行以下操作:-

  1. 它会假设“test”和“test”是相同的。 (它将忽略字符末尾的空格)。
  2. 但是会假设“test”和“test”,左边和右边的空格是两个不同的字符串。

那么这背后的规则是什么?由于 IP 地址不能包含空格,我是否应该在将字符串保存到 SQL Server 数据库之前始终修剪()该字符串以解决此问题?

最佳答案

由于您发布了这实际上使用 EF 的详细信息,因此我关于字符串比较的评论无效。

假设您的数据库是 Sql Server,或者任何符合 ANSI 字符串比较标准的数据库,字符串在比较之前被填充为相同的长度。所以'test'被填充为与'test'相同的长度,通过附加一个空白字符,在字符串被比较之前,因此它们被评估为相等。相反,当比较 'test' 和 'test' 时,'test' 被填充到 'test' 以与 'test' 的长度相同,这仍然导致字符串不作为等效字符串进行比较。

http://support.microsoft.com/kb/316626

关于c# - 字符串比较 ==,当它忽略空格时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19577493/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com