如何使用 notepad++ 将英文文本排列在包含非 ascii(日语)字符的行中?

如何使用 notepad++ 将英文文本排列在包含非 ascii(日语)字符的行中?

以下是示例行中的一些片段

d5e2306b1afe0724d5798053e430894a       パックマン                                        JPN
9208dd96fcff37400c6f3c42cd1d85ed       スペランカー                                       JPN

很难说清楚,但两行 JPN 中的 J 都位于第 124 位,但我似乎无法让它们正确排列。这份文件有 500 行,这让我觉得整列到处都是锯齿状的。

答案1

问题在于您使用的字体中的日文字符采用非固定宽度字体,因此文本会移动。

我使用提供的文本在我的系统上尝试了很多字体,唯一似乎将日文字符作为固定文本的字体是@Malgun Gothic。

因此,您要做的是转到“设置”、“样式配置器”、“转到全局”,将字体更改为@Malgun Gothic,检查下面的替换正常字体,这样就可以了。

请注意,您实际上可以更改字体并实时查看结果,因此您可以进行尝试。

答案2

一种解决方法是移动文本。通过将日文文本放在行尾,之前的所有内容都将正确间隔。使用正则表达式搜索/替换,您可以一次性将所有内容移动到文件后面。唯一的缺点是,日文字符的字母数量不同,因此替换后会有间距差异,但根据您的文档,第二次搜索/替换可以解决这个问题。

在 Notepad++ 中打开搜索/替换框,在搜索中输入以下正则表达式:

^(.+?)([\x{3000}-\x{5000}]+)(.+?)$

在替换为中输入以下内容:

$1 $3 $2

在底部,将其设置为正则表达式

现在点击全部替换。

如果结果不理想,您可以按 CTRL-Z 撤消。

正则表达式解释:

^                                   Start of the line
  (.+?)                             Find any characters non-greedy
                                      and place in capture group 1
       ([\x{3000}-\x{5000}]+)       Find any unicode in the range 0x3000 to 0x5000
                                      and place in capture group 2
                             (.+?)  Find any characters
                                      and place in capture group 3

                                  $ End of the line

它将 3000 到 5000 范围内的所有 unicode 字符移到末尾。本例中的日语似乎属于这个范围。

相关内容