使用 GREP 在 Indesign 中将数字格式化为货币格式

Formatting numbers to currency format in Indesign using GREP

我想知道如何使用 GREP 在 InDesign 中为数字添加逗号 (,) 和美元符号 ($)。

例如,

  1. 首先,通过以下任一方式打开 InDesign 的 Find/Change 调色板:

    • 从菜单栏中选择 Edit > Find/Change
    • 或者,在 macOS 上键入 +F,或键入 CTRL+F 在 Windows.
  2. 然后,select Find/Change 调色板中的 GREP 面板。


TL;DR 使用下面结合解决方案 A 和 B 部分中提供的解决方案。但是,请考虑 中提供的解决方案,如果您也想这样做,还可以将 100000 等 6 位数字更改为下面的 0,000 部分。


解决方案 A:

A GREP configuration to turn 4 digit numbers such as 2000 into ,000

  1. "Find What"区域,输入以下模式:

    (?<![0-9])([0-9]{1})([0-9]{3})(?![0-9]+?)
    

    可以找到此正则表达式模式的详细说明 here

  2. "Change To"区域输入以下内容:

    $,
    

解决方案 B:

A GREP configuration to turn 5 digits numbers such as 20000 into ,000

  1. "Find What"区域,输入以下模式:

    (?<![0-9])([0-9]{2})([0-9]{3})(?![0-9]+?)
    

    可以找到此正则表达式模式的详细解释 here

  2. "Change To"区域输入以下内容:

    $,
    

结合解决方案 A 和 B:

为了达到您的要求,您可以使用以下单个正则表达式模式来执行单个 "Find/Replace"。这处理了这两个要求,即将 2000 等数字更改为 ,000 并且还处理将 20000 等数字更改为 ,000

  1. "Find What"区域,输入以下模式:

    (?<![0-9])([0-9]{1,2}?)([0-9]{3})(?![0-9]+?)
    

    可以找到此正则表达式模式的详细解释 here

  2. "Change To"区域输入以下内容:

    $,
    

也将100000等6位数字改成0,000

如果您还想将 100000 等 6 位数字更改为 0,000,请执行以下操作:

  1. "Find What"区域,输入以下模式:

    (?<![0-9])([0-9]{1,3}?)([0-9]{3})(?![0-9]+?)
    

    可以找到此正则表达式模式的详细解释 here

  2. "Change To"区域输入以下内容:

    $,
    

补充说明:

  1. 上述解决方案中的"Change To"文本(即$,)利用</code>和<code>来引用匹配的数字正则表达式模式的括号 (...) 中包含的子表达式。第一个美元符号 ($) 和逗号 (,) 被插入到结果文本中

  2. 要在您的文档中执行更改,您需要依次单击 "Find" 按钮和 "Change All" 按钮。


编辑:

OP 的作者随后在评论中提出以下问题:

also one last note, what would I add to the expression to make it search for 9 digit numbers?

在执行上述 中提供的解决方案后,将 100000 等 6 位数字更改为 0,000 部分再考虑 运行 Find/Change 使用以下配置:

  1. "Find What"区域,输入以下模式:

    (?<![0-9])([0-9]{1,3}?)([0-9]{3})([0-9]{3})(?![0-9]+?)
    

    可以找到此正则表达式模式的详细说明 here

  2. "Change To"区域输入以下内容:

    $,,
    

因此,在执行两个单独的 Find/Change 任务后,即

  1. 中提供的也把100000等6位数字改成0,000
  2. 后面是 编辑 部分中提供的这个新内容。

您将处理所有 numbers/digits 长度从 4 到 9 位的数字。

逗号的位置将如下面 table 所示:

┏━━━━━━━━┯━━━━━━━━━━━┯━━━━━━━━━━━━━━┯━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┯━━━━━━━━━━━┓
┃ No. of │ Example   │ Example      │                                                        │           ┃
┃ digits │ Before    │ After        │ Find What Pattern                                      │ Change To ┃
┣━━━━━━━━┿━━━━━━━━━━━┿━━━━━━━━━━━━━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┿━━━━━━━━━━━┫
┃   4    │ 1234      │ ,234       │                                                        │           ┃
┠────────┼───────────┼──────────────┤                                                        │           ┃
┃   5    │ 12345     │ ,345      │ (?<![0-9])([0-9]{1,3}?)([0-9]{3})(?![0-9]+?)           │ $,    ┃
┠────────┼───────────┼──────────────┤                                                        │           ┃
┃   6    │ 123456    │ 3,456     │                                                        │           ┃
┣━━━━━━━━┿━━━━━━━━━━━┿━━━━━━━━━━━━━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┿━━━━━━━━━━━┫
┃   7    │ 1234567   │ ,234,567   │                                                        │           ┃
┠────────┼───────────┼──────────────┤                                                        │           ┃
┃   8    │ 12345678  │ ,345,678  │ (?<![0-9])([0-9]{1,3}?)([0-9]{3})([0-9]{3})(?![0-9]+?) │ $,, ┃
┠────────┼───────────┼──────────────┤                                                        │           ┃
┃   9    │ 123456789 │ 3,456,789 │                                                        │           ┃
┗━━━━━━━━┷━━━━━━━━━━━┷━━━━━━━━━━━━━━┷━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┷━━━━━━━━━━━┛

在 InDesign 中,您可以将其用于 4、5 或 6 个数字。

查找:(\d+)(?=(\d\d\d)+\b) 变化:$,