我有两个清单
var list1 = new List<string>(6)和var list2 = new List<string>(6),
它们包含数据、带有字母的数字、
例如:5f, 3d, 6c等等
如何比较两个列表中的数据,以便仅比较具有相同字母的数字?
例如5f и 6f,让程序了解什么6f > 5f。
我尝试转换
Convert.ToInt32(list1[0])并写出条件if (list1[0]>list2[0]) ...
但它给出了一个错误нельзя сравнивать значения типа string и string
我将使用 OOP 方法添加一个解决方案。让我们通过创建一个结构体来封装字符串比较和解析的逻辑,其中的字段用于存储值和西装彼此分开。这样就可以实现运算符重载
>,<并且==可以方便的进行对象的比较。这种方法的便利之处在于,当比较不同花色的牌时,您可以轻松地重新定义处理情况的逻辑。在示例中,我将展示最简单的简单方法,因为猜测应用程序中需要什么逻辑是没有意义的。最重要的是传达想法。
为了简单起见,我们假设描述地图的字符串的格式是固定的。它必须由一个数字后跟一个且仅一个字母组成。因此,无需正则表达式也是可以的。因为正则表达式的解决方案已经在Dev18的答案中给出了。这是一个代码示例:
安慰
在我看来,对于您需要将字符串与数字和字母进行比较的任务,正则表达式是完美的(?)。
(\d+)([a-zA-Z])将帮助我们识别数字和花色。 B(\d+)捕获字母之前的所有数字,并且[a-zA-Z]- 花色的字母部分我们需要分别提取数字和“花色”。
我会建议这个解决方案:
首先,让我们使用正则表达式
(\d+)([a-zA-Z])来选择两组:第一组(数字)和第二组(字母),正如我上面所说的。数字部分将帮助我们确定顺序,字母部分将帮助我们检查元素是否属于同一“花色”如果字母匹配,则可以比较数字以确定哪个元素更大。如果字母不匹配,则跳过这些元素,因为它们属于不同的花色并且无法进行比较
在列表中添加了更多“无法比较”的元素(条件没有这么说),比如只是数字,或者只是字母,要检查,你可以省略这部分 //但我仍然有一个问题,如果list1中有怎么办5d 4d 和list2 中的6d,如何比较?现在我们连续比较,如果不适合我们继续,但是是否有必要遍历“整个”表才能找到它的其他“适合”
这是代码本身
安慰