【问题标题】:Inserting zero-width space after each symbol在每个符号后插入零宽度空格
【发布时间】:2019-02-14 17:45:45
【问题描述】:

我需要在 MS Excel 文档中的文本中的每个字符后放置一个零宽度空格。
两个重要条件:

  • 目标文本为日文和中文。
  • 不应影响包含拉丁字符和数字的文本。 IE。在混合 Asian\Latin 单元格中,只有亚洲字符必须用这些空格分隔。

文本量很大,因此手动输入它们很痛苦。

我试图找到任何合适的 VBA 模块,但没有成功。

也许可以在另一个应用程序中执行此类操作,然后将文本导入回 Excel?这样的解决方案也是可以接受的。

提前致谢。

附:例外(拉丁字符):

65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122

【问题讨论】:

标签: excel vba zero-width-space


【解决方案1】:

假设:

U+200B

这个小宏:

Sub dural()
    Dim zws As String, A1 As String, L As Long, i As Long
    Dim temp As String

    zws = ChrW(8203)
    A1 = Range("A1").Text

    L = Len(A1)
    For i = 1 To L
        temp = temp & Mid(A1, i, 1) & zws
    Next i

    temp = Mid(temp, 1, Len(temp) - 1)
    MsgBox A1 & vbCrLf & temp

    Range("A2").Value = temp
End Sub

将产生:

注意:

字符可以是零宽度,但不是零长度!

【讨论】:

  • 感谢这个宏!但是,我已经提到不应影响拉丁字符或数字。有没有办法修改宏并在那里添加异常?
  • @JohnnyLeoni YES 只需使用异常的 uni-code ID (十进制) 更新您的原始问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-09
  • 1970-01-01
  • 2012-05-19
相关资源
最近更新 更多