用Unicode字符划掉纯文本?

27

你是否可以在代码注释中划掉 不需要的 修改后的单词? 由于开发人员仍然在使用最初时代的纯文本编写代码,在没有隐藏标识符的情况下无法格式化文本,为了实现这一点,唯一的方法是使用Unicode字符。

由于某些Unicode字符可以扩展到它们指定的边界之外,因此我认为可能会找到一个创建删除线效果的Unicode字符。

不幸的是,破折号字符—占据了大量的水平空间。是否有其他字符可用于创建跨越文本的删除线效果?

3个回答

26

有一个叫做U+0336的字符,它是一种组合字符,可以用来给文本添加删除线效果。如果在谷歌中搜索“Unicode strikethough”,就会出现一些工具可以帮助你将其应用到文本中,比如这个。但是,效果是否好看取决于你的字体;在我的环境中,效果非常糟糕。


3
啊,这似乎是有效的。和像 M 这样宽的字母相比,它似乎有点短,但你好像已经回答了我的问题。谢谢,抱歉没有先在 Google 上搜索。 - 700 Software
1
@GeorgeBailey,对于简单的文本来说还好,但是当使用像~!@#$%^&()这样的特殊字符时,我们可能会得到一个丑陋的文本... ~̶!̶@̶#̶$̶%̶^̶&̶̶(̶)̶,̶ 特别是在使用 @̶@̶@̶@̶%̶%̶%̶%̶ 时。 - Crystal Paladin

7
你还可以在Python 3+中使用这个函数来动态生成它:
def striken(text):
    return ''.join(t+chr(822) for t in text)

示例输出
>>> def striken(text):
...   return ''.join(t+chr(822) for t in text)
... 
>>> striken("hello")
'h̶e̶l̶l̶o̶
>>> striken("hello darkness my old friend")
'h̶e̶l̶l̶o̶ ̶d̶a̶r̶k̶n̶e̶s̶s̶ ̶m̶y̶ ̶o̶l̶d̶ ̶f̶r̶i̶e̶n̶d̶'

此外,你也可以使用以下方法:

def striken(text):
    return '\u0336'.join(text) + '\u0336'

如果你的文本真的很长,建议按照 @astroMonkey 的建议来提高速度。


2
使用 '\u0336'.join(text) + '\u0336' 可以避免较慢的 Python for 循环。 - codeMonkey
1
@astroMonkey的建议已添加,并修复了一个off by one错误。 - Caridorc
2
@Caridorc 在Unicode中,变音符号总是添加在主字符之后。因此,额外的删除线应该添加到末尾而不是开头。 - Gordon Wrigley

0
在一个 AutoHotkey 脚本中:
<^>!ü::Send {U+0336}

按下

AltGr+ü , y , AltGr+ü , e , AltGr+ü , s

̶是的,我可以用删除线表示

(抱歉,我选择了德语umlaut作为快捷方式,您可能希望使用其他键)


2
ü 很有意义,就像“dürchgüstrüchün”一样 :-) - Marcus K.

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