我有一个列表框,其中包含一些数据,如下所示:
C44 EXCLUDES 237.910 193.469 0 0603_5
C45 EXCLUDES 244.102 193.387 0 0603
R47 EXCLUDES 226.935 179.519 90 0402_1
C18 CAP-00129G 230.960 190.619 0 0402
C17 CAP-00129G 250.085 198.569 180 0402_3
Q7 IC-00268G 258.460 205.594 0 SOT236
C25 CAP-00130G 255.635 189.669 90 0402_3
C56 EXCLUDES 229.430 189.374 0 0402
R42 EXCLUDES 241.010 192.194 90 TANT3216
R21 CAP-00129G -123.370 -112.114 270 0402_3
R10 EXCLUDES 246.560 203.894 0 0402_9
... .......... ....... ....... ... ........
我想按字符串的结尾对 ListBox 进行排序......所以第6列中的值(0603_5、0603_5、0402_2、0402_4、0402_3、TANT3216、0402_9 ......)。
尽管并非所有这些都显示在上面的文件示例中,但以下是它们应该出现的顺序(从上到下):
RES, 0402, 0201, 0603, 0805, 1206, 1306, 1608, 3216, 2551, 1913, 1313, 2513, 5125, 2525, 5619, 3813, 1508, 6431, 2512, 1505, 2208, 1005, 1010, 2010, 0505, 0705, 1020, 1812, 2225, 5764, 4532, 1210, 0816, 0363, SOT.
此外,如果有多个相似的结尾(参见上面和下面的 *0402_3*),则列表项将按第 2列排序。因此,即使以 开头的行在以 开头R21
的行之后C25
,并且它们都以 *0402_3* 结尾,R21
也会放在上面,C25
因为它在第 6 列之后检查了第 2 列(这是从最小到最大排序的)。
所以,新文件看起来像这样:
C18 CAP-00129G 230.960 190.619 0 0402
C56 EXCLUDES 229.430 189.374 0 0402
R47 EXCLUDES 226.935 179.519 90 0402_1
C17 CAP-00129G 250.085 198.569 180 0402_3
R21 CAP-00129G -123.370 -112.114 270 0402_3
C25 CAP-00130G 255.635 189.669 90 0402_3
R10 EXCLUDES 246.560 203.894 0 0402_9
C45 EXCLUDES 244.102 193.387 0 0603
C44 EXCLUDES 237.910 193.469 0 0603_5
R42 EXCLUDES 241.010 192.194 90 TANT3216
Q7 IC-00268G 258.460 205.594 0 SOT236
... .......... ....... ....... ... ........
请注意TANT3216
之前出现,SOT236
因为它在上述订购列表中的编号为3216而不是TANT 。
问题:
- 如何使用第6列(如果需要,第 2列)对第一个文件进行正确排序,使其看起来像第二个文件?
- 我可以使用正则表达式还是有更简单的方法?
- 我有 3 个列表框,这 1 个需要使用上面的规则(结尾)进行排序,第二个列表框使用单独的规则,第三个列表框对没有进入第一个或第二个列表框的任何其他内容进行排序。所以第一个和第二个列表框是相似的,那么我怎么能按字母顺序为第三个列表框排序呢?