前言
在Stack Exchange降价中,我们使用**将文本加粗。例如,此降价:
The **quick brown fox jumps over the lazy** dog.
呈现为:
在敏捷的棕色狐狸跳过懒惰的狗。
当然,我们也使用**来关闭粗体。因此,答案将更少。例如:
The **quick** brown fox jumps over the **lazy** dog.
呈现为:
在快速的棕色狐狸跳过懒惰的狗。
但是,如果未关闭粗体,则将其呈现为非粗体:
The **quick brown fox jumps over the lazy dog.
呈现为:
敏捷的棕色狐狸跳过了懒狗。
如果文本带有单个反斜杠\
,则粗体无效,或者:
The \**quick brown fox jumps over the lazy dog.**
呈现为:
敏捷的棕色狐狸跳过了懒狗。**
尾随空格会导致文本未加粗体(请注意,棕色后的空格是单个制表符):
The** quick** brown fox jumps over the lazy dog.**
呈现为:
敏捷的棕色狐狸跳过了懒狗。**
我们也可以将__用作粗体,但是请注意一次只能激活一个。这是一个更复杂的示例:
The __quick**__ brown **fox__ jumps** over__ the__ lazy **dog.
呈现为:
该快速**棕色fox__跳 over__ the__懒**狗。
问题:
你可以写一个程序或功能,给ASCII文本无论是作为一个String
参数或标准输入,其中唯一的特殊字符**
,__
,\
(转义)和结尾的空白,确定有多少粗体字有。此值应打印到STDOUT或从函数返回。您不需要支持很长的字符串。保证字符串长度不超过30K
,这是Stack Exchange帖子的限制。
印刷精美:
- 我可以为一种情况抛出异常/其他错误,而为另一种情况正常返回吗?
- 否。在两种情况下,返回值都必须是清晰,明确,无错误的返回值。STDERR输出将被忽略。
- 单词之间的空格是否被视为粗体?
- 是。
**quick brown**
包含11个粗体字。
- 是。
- 如若
\
在\**
,如果大胆,算呢?- 不会。它呈现为**,因此如果将其加粗,则只能为2个字符。
- 完全清楚:您指的是多少个字符?
- 会以粗体显示的总字符数。这意味着,
**
在不渲染,如果它把文本,但如果没有它的呈现方式。 - 请注意,可以通过
**
多种方式将其加粗,例如**\****
-> **。 - 不要考虑将某些文本转换为斜体的可能性。该唯一降价的规则要考虑的是** =黑体*。
- 会以粗体显示的总字符数。这意味着,
- 在Stack Exchange上,HTML Bold也可以使用。即<b> </ b>
- 是的,我知道。不要考虑这种情况,这是正常的文本。
- HTML实体呢?例如
<
-><
- 这些也应视为普通文本,没有HTML实体转换。
- 我想到了上面没有提到的一个例子!
- 规则的功能就像文本在答案(不是注释)上发布在Stack Exchange上一样,只是代码块不被视为特殊字符。四个空格类型和反引号类型。如果您不确定应如何呈现文本,只需将其放入答案框中作为测试,这是您应遵循的规则。
例子:
输入:
The **quick brown fox jumps over the lazy** dog.
输出:
35
输入:
The **quick brown fox jumps over the lazy dog.
输出:
0
输入:
The __quick**__ brown **fox__ jumps** over__ the__ lazy **dog.
输出:
18
输入:
The __quick\____ brown fox **jumps over\** the** lazy \**dog.
输出:
23
输入:
The****quick brown fox****jumps over **the****lazy** dog.
输出:
11
禁止使用标准漏洞。
**fox__ jumps**
终止该特定的粗体。
\**
或是\__
三个字符的转义序列,但是在StackExchange中只有两个字符的转义序列\*
或\_
。因此\***a**
产生一个星号,后跟一个粗体a
。还有另一个逃生路线\\
。我们应该处理那个吗?
18
正确的第三个测试案例?