【发布时间】:2014-08-30 13:09:51
【问题描述】:
我有 2 个 GUID - guid1 和 guid2。我想将它们组合成一个 guid,首先订购最低的。
所以我会这样做:
if(Guid1.Length != Guid2.Length)
{
if (Guid1.Length > Guid2.Length)
return Guid2 + Guid1;
else
return Guid1 + Guid2;
}
else
{
var isDiff = true;
var index = Guid1.Length - 1;
while(isDiff)
{
if (index < 0) // same guids
return Guid1 + Guid2;
if(Guid1[index] == Guid2[index])
{
index--;
}
else
{
// Here stuck
}
}
}
在注释部分,我想检查每个字符是数字还是字母,找到最低的,然后连接并首先返回最低的字符串。
例子:
guid1 = "ab12"; guid2 = "a21c";
所以我认为每个字符串字符都可以转换成它的 ASCII 等价物,然后找到最小值。
对于我的例子,返回的字符串是:
guid1 + guid2 = "ab12a21c"
因为第二个字符的十进制值是 32(对于数字 2)和 98(对于 b)。
这是最好的方法吗?如果是这样,我如何在 c# 中转换为 ASCII?
【问题讨论】:
-
你对“最低”的定义是什么?
-
另外,您的“guid”似乎是一个字符串。为什么不改用
Guid结构呢?然后你可以更容易地比较它们,只选择较低的(结构实现IComparable) -
@HonzaBrestan 如果我没记错的话,我的 MVC Identity 生成的用户 ID 是数据库中的字符串。我会仔细检查一下。
-
@UweKeim 被认为是最低的。我正在制作一个标准功能。在我的示例中,它将是根据 ASCII 表将字符串转换为十进制值获得的最小值
标签: c#