![如何使用 notepad++ 将英文文本排列在包含非 ascii(日语)字符的行中?](https://linux22.com/image/1624398/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%20notepad%2B%2B%20%E5%B0%86%E8%8B%B1%E6%96%87%E6%96%87%E6%9C%AC%E6%8E%92%E5%88%97%E5%9C%A8%E5%8C%85%E5%90%AB%E9%9D%9E%20ascii%EF%BC%88%E6%97%A5%E8%AF%AD%EF%BC%89%E5%AD%97%E7%AC%A6%E7%9A%84%E8%A1%8C%E4%B8%AD%EF%BC%9F.png)
以下是示例行中的一些片段
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 字符移到末尾。本例中的日语似乎属于这个范围。