在记事本中某个字符后的行排序

问题描述 投票:1回答:1

我的行要从最高编号到最低编号或相反编号排序,所以这不是一个问题

例如从此:

steven:class3 | Pounds: 6
ibesom:class1 | Pounds: 125
heller:class1 | Pounds: 13

至此:

ibesom:class1 | Pounds: 125
heller:class1 | Pounds: 13
steven:class3 | Pounds: 6

谢谢你们

sorting notepad++
1个回答
0
投票

对于简单的排序任务,您可以重新排列行的内容,进行排序,然后将行恢复为其原始形式。这通常可以通过简单的正则表达式来完成。有关示例,请参见this question

对于更复杂的情况,可能涉及两个或多个项目,可以使用正则表达式从输入行中收集要排序的项目,然后将其插入到行的开头。在排序条件和原始行之间添加分隔符很有用。完成排序后,将删除排序项和分隔符。

对于这个问题,简单的重新排列然后排序,然后重新排列就足够了。但是,使用更通用的样式很有启发性。

首先,选择一个分隔符。使用要排序的文本中没有出现的字符或字符串。为此,我选择;'#

[下一步创建正则表达式查找并替换以提取搜索词并构建要排序的行。为此,查找内容为^(.*)\b(\d+)$,替​​换项为$2 ;'#$0

这会将示例输入更改为:

6 ;'#steven:class3 | Pounds: 6
125 ;'#ibesom:class1 | Pounds: 125
13 ;'#heller:class1 | Pounds: 13

现在使用菜单=>编辑=>行操作=>排序为升序的整数。产生:

6 ;'#steven:class3 | Pounds: 6
13 ;'#heller:class1 | Pounds: 13
125 ;'#ibesom:class1 | Pounds: 125

使用的方法不限于整数。可以使用任何字符和适当的排序来构建排序项。

最后一步是删除排序项和分隔符。使用正则表达式替换所有结果^.*;'#,然后不替换任何内容。

唯一的挑战是创建第一个正则表达式以生成排序项并将其添加到行中。总体计划是,查找内容与整个输入行匹配,因此查找以^开头,以$结束。然后,替换项具有三个项目“排序项”,“分隔符”和$0。最后的$0包括整个原始输入行。

© www.soinside.com 2019 - 2024. All rights reserved.