【问题标题】:Why aren't the lines sorted as expected in Notepad++?为什么 Notepad++ 中的行没有按预期排序?
【发布时间】:2021-06-07 14:12:30
【问题描述】:

我有以下几行:

'RECIPIENT_REFUSED',
'DELIVERED',
'DELIVERING_TO_DESTINATION',
'DRIVER_CONFIRMATION_PENDING',
'IN_PAYMENT',
'NOT_PAID',
'PAID',
'QUOTE_EXPIRED',
'QUOTE_REJECTED',
'QUOTE_UNDECIDED',
'TIME_CHANGED'
'ARRIVED_AT_DESTINATION',
'ARRIVED_AT_PICKUP',
'CANCELLED_BY_RECIPIENT',
'CANCELLED_BY_XXX',
'CANCELLED_BY_SHOP',
'CANCELLED_BY_TRANSPORT',
'DISPATCH_PENDING',
'DRIVING_TO_PICKUP',
'ITEMS_PICKED_UP',
'RECIPIENT_ABSENT',

标记所有这些,然后运行编辑 | 生产线操作 | Sort Lines Lexicographically*(无论我选择什么选项)都不能正确地对上面的行进行排序。这是按字典升序排序后的结果:

'ARRIVED_AT_DESTINATION',
'ARRIVED_AT_PICKUP',
'CANCELLED_BY_RECIPIENT',
'CANCELLED_BY_XXX',
'CANCELLED_BY_SHOP',
'CANCELLED_BY_TRANSPORT',
'DISPATCH_PENDING',
'DRIVING_TO_PICKUP',
---- Below this line the sort order is wrong but it doesn't change
---- when I re-run the sort functions
'ITEMS_PICKED_UP',             
'RECIPIENT_ABSENT',            
'RECIPIENT_REFUSED',           
'DELIVERED',                   
'DELIVERING_TO_DESTINATION',   
'DRIVER_CONFIRMATION_PENDING', 
'IN_PAYMENT',
'NOT_PAID',
'PAID',
'QUOTE_EXPIRED',
'QUOTE_REJECTED',
'QUOTE_UNDECIDED',
'TIME_CHANGED'

我做错了什么,我误解了这些函数的输出,是我的 Notepad++ 安装配置不正确还是 Notepad++ 错误?有什么想法/提示吗?

Notepad++ 7.9.5 和这些已安装的插件:

  • Mime 工具 2.5
  • Npp 转换器 4.2.1
  • NppExport 0.2.9

更新:

没有隐藏字符。这是来自 MySQL 的 ENUM 列表,我想对其进行排序。所有其他工具都可以正确排序。


更新:

这里是来自 NP++ 的屏幕截图,显示了所有字符。


更新:

如何重现它:

这是从 phpMyAdmin 从ENUM 表字段复制到空 NP++ 选项卡的列表:

'ARRIVED_AT_DESTINATION', 'ARRIVED_AT_PICKUP', 'CANCELLED_BY_RECIPIENT', 'CANCELLED_BY_SFD', 'CANCELLED_BY_SHOP', 'CANCELLED_BY_TRANSPORT', 'DISPATCH_PENDING', 'DRIVING_TO_PICKUP', 'ITEMS_PICKED_UP', 'RECIPIENT_ABSENT', 'RECIPIENT_REFUSED', 'DELIVERED', 'DELIVERING_TO_DESTINATION', 'DRIVER_CONFIRMATION_PENDING', 'IN_PAYMENT', 'NOT_PAID', 'PAID', 'QUOTE_EXPIRED', 'QUOTE_REJECTED', 'QUOTE_UNDECIDED', 'TIME_CHANGED'

然后我将所有, 替换为,\n,因为行拆分 不会拆分行。

然后分割线以这种奇怪的方式排序。

【问题讨论】:

  • 1) 这属于Super User。 2)I can't reproduce.
  • 这在我看来也无法重现。也许有一些我们看不到的隐藏字符。
  • @PeterVARGA 一个版主或 3 个具有投票关闭权限的用户可以迁移它。但是,在当前状态下,我认为不应该迁移它,因为该问题不可重现。如果您在 Notepad++ 中打开一个新选项卡,将文本 from the question 复制下来,然后重试,是否仍然可以重现问题?
  • 如果第一个选项不起作用,请使用 View > Show Symbol > Show All Characters 或使用十六进制编辑器来识别隐藏的字符。
  • 您可能使用的是 Windows,因此新文件的默认 EOL 模式是 CRLF(AKA,"\r\n")。现在,当您将值拆分为行时,您只使用"\n" (LF)。因此,从 Notepad++(使用 CRLF EOL 模式)的角度来看,它们在技术上并不是独立的行(至少它看起来是这样工作的)。

标签: notepad++


【解决方案1】:

正如用户 41686d6564 指出的那样,这是我之前使用 Windows 记录 Linux EOL 的行拆分的问题。

可以使用以下 2 个选项之一进行修复:

  1. 当我使用,\n 进行替换时,将文档的 EOL 更改为 Linux。
  2. 如果文档处于 Windows 模式,则使用 ,\r\n

【讨论】:

    猜你喜欢
    • 2011-08-28
    • 1970-01-01
    • 1970-01-01
    • 2010-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-06
    • 2022-11-17
    相关资源
    最近更新 更多