【问题标题】:Strike through plain text with unicode characters?用 unicode 字符删除纯文本?
【发布时间】:2016-12-19 23:33:40
【问题描述】:

是否可以在您的代码 cmets 中删除 unwanted 修改过的单词?由于开发人员仍然在黑暗时代编写更简单的纯文本时代,其中无法使用隐藏标识符格式化文本,因此实现此目的的唯一方法是使用 Unicode 字符。

由于某些 unicode 字符可以扩展为̜̤͉̘̝̙͂̓ͫ̽̊̀y̐ͨͧͩ̚o̥̗̞̬̯͚͂n͔͖̤̜̖̪͒̈́ͅd̯̮ͭ 它们指定的边界,我认为可能找到一个 Unicode 字符来创建删除线效果。

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

【问题讨论】:

    标签: unicode strikethrough


    【解决方案1】:

    有 U+0336,结合长笔画叠加。谷歌搜索Unicode strikethough 会找到将其应用于您的文本的工具,例如this one。是否好看取决于你的字体;在我的环境中看起来很糟糕。

    【讨论】:

    • 啊,这个̶s̶e̶e̶m̶s̶̶t̶o̶̶w̶o̶r̶k̶。与像 M 这样的宽字母相比,它看起来确实有点短,但你似乎已经回答了我的问题。谢谢,很抱歉没有先正确搜索 Google。
    • @GeorgeBailey,对于简单的文本,没关系...但是当使用像 ~!@#$%^&*() 这样的特殊字符时,我们最终可能会得到一个丑陋的文本... ~ ̶!̶@̶#̶$̶%̶^̶&̶*̶(̶)̶,̶ 尤其是在使用@̶@̶@̶@%̶%̶%̶%̶
    【解决方案2】:

    您还可以在 Python 3+ 中使用此函数动态生成它:

    def striken(text):
        return ''.join(chr(822)+t for t in text)
    

    示例输出

    >>> def striken(text):
    ...   return ''.join(chr(822)+t 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' + '\u0336'.join(text)
    

    如@astroMonkey 建议的那样,如果您的文本真的很长,则速度会更快。

    【讨论】:

    • 使用'\u0336'.join(text) + '\u0336' 避免了较慢的python for-loop
    • @astroMonkey 建议添加和关闭由一个错误修复
    • @Caridorc 在 Unicode 中,变音符号总是添加在主要字符之后。所以额外的删除线应该添加到末尾而不是开头。
    【解决方案3】:

    AutoHotkey 脚本中:

    <^>!ü::Send {U+0336}
    

    按下

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

    ̶y̶e̶s,我可以删除线?

    (对不起,我选择了德语变音符号作为快捷方式,您可能需要其他键)

    【讨论】:

    • ü 非常有道理,比如“dürchgüstrüchün”左右:-)
    猜你喜欢
    • 2022-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-20
    • 2020-09-03
    • 2018-09-03
    • 2018-05-08
    • 2015-04-23
    相关资源
    最近更新 更多