Unicode有特殊的标记字符吗?

3

我的父亲在90年代中期为他公司的计算机创建了一种编码,用于工程目的。它与ISO 8859-2(Latin 2)接近,但有一些区别。

例如,添加了一个特殊的“标记字符”。这个字符不是字面意义上的,但也不是控制字符。

这个字符的目的是在需要将文本分成几部分时由机器插入。请参见以下Python解析器脚本:

re.sub(r'\{\{', r'~{{', text)
re.sub(r'\[\[', r'~[[', text)
re.sub(r'\]\]', r']]~', text)
re.sub(r'\}\}', r'}}~', text)
parts = text.strip('~').split('~')
inCurly = [False]
inSharp = [False]
whereAmI = ['']

for part in parts:
    if part[:2] == '{{':
        inCurly.append(True)
        whereAmI.append('Curly')
    elif part[:2] == '[[':
        inSharp.append(True)
        whereAmI.append('Sharp')

if whereAmI[-1] == 'Sharp' and not inCurly[-1]:
    # some advanced magic on current part,
    # if it is directly surrounded by sharp brackets,
    # but these sharp brackets are not in curly brackets anyhow
    # (not: "{{ (( [[ some text ]] )) }}")

# detecting closing brackets and popping inSharp, inCurly, whereAmI
# joining parts back to text

这是一个用于高级目的的简单解析器,您可以根据需要检测更多的括号或引号。但它有一个巨大的缺陷。当文本中存在 ~ 时,它会破坏事物。

为此,他在编码/字符集中添加了一个标记字符,以解决这个问题和类似的问题(但我认为是在 C 语言中)。

多年来,我使用三个德语 "sharp s" 来完成此目的:ßßß,因为几乎不可能看到它们连续出现三次。但这不是一个理想的解决方案。

昨天我父亲告诉我这个故事,我立刻想到:Unicode 家族中是否有相应的等价物?Unicode 是过去十年间在全球范围内急剧发展的现代标准。应该有一个专门为这个特定目的设计的特殊字符,对吗?

1个回答

0

我不认为有什么特别叫做那个的东西,但你可能会发现零宽度空格或信息分隔符等其他字符适合此目的。您可以任意选择任何字符作为标记,并在字符串中使用转义字符(如果出现)。

在控制图片块中,有一个符号表示组分隔符。


好的,就像我之前说的一样,我使用三个字母的井号。 - aleskva
1
请注意,如果您可以插入分隔符或标记字符,则也可以在ß(或任何其他字符)前面插入转义字符。或者,如果您想要保证未使用的内容,可以使用U+FFFF。 U+FFF9,分词注释锚点,也有些相似。 - Davislor

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接