我有一个VBA公式函数,可以将字符串拆分并在每个字符之间添加空格。它只适用于Ascii字符串。但是我想对泰米尔语做同样的事情。由于它是Unicode,结果无法读取。它甚至拆分了辅助字符、上点、前缀、后缀辅助字符,这些字符在泰米尔语/印地语/卡纳达语/马拉雅拉姆语/所有印度语言中不应该被分开。那么,如何编写函数将泰米尔语单词拆分为可读字符。
添加空格并不是这个问题的重点。从任何语言的 Unicode 字符串中将其拆分为数组才是要求。
例如,单词 "பார்த்து" 应被分隔为 "பா ர் த் து",而不是作为 "ப ா ர ் த ் த ு"。正如您所看到的,前两个字母 "பா"(ப + ா)是结合在一起的。如果我试图手动在它们之间放置一个空格,在任何文字处理器中都无法这样做。如果您想进行测试,请将其放入记事本中,并在每个字符之间添加空格。它不允许您将其分开为("ப ா")。因此,“பார்த்து”应该被分隔为“பா ர் த் து”。这是泰米尔语等语言中的正确分隔方式。这就是我在 VBA 中努力实现的。 泰米尔语的字符编码表在这里。 泰米尔语/印地语/许多印度语言有(1)辅音,(2)独立元音,(3)依赖元音标记,(4)两部分依赖元音标记。在这4种类型中,前两种是单独的字母,没有问题。但是后两种是依赖的,它们不应该与其联合字符分开。例如,字母பா (ப + ் ),它包含一个独立的 (ப) 和一个依赖的 (ா) 字母。
如果这些信息还不足够,请评论我需要发布更多什么内容。
(注:通过@Codo的MS链接,在C#.Net中可以实现此功能)
Function AddSpace(Str As String) As String
Dim i As Long
For i = 1 To Len(Str)
AddSpace = AddSpace & Mid(Str, i, 1) & " "
Next i
AddSpace = Trim(AddSpace)
End Function
添加空格并不是这个问题的重点。从任何语言的 Unicode 字符串中将其拆分为数组才是要求。
例如,单词 "பார்த்து" 应被分隔为 "பா ர் த் து",而不是作为 "ப ா ர ் த ் த ு"。正如您所看到的,前两个字母 "பா"(ப + ா)是结合在一起的。如果我试图手动在它们之间放置一个空格,在任何文字处理器中都无法这样做。如果您想进行测试,请将其放入记事本中,并在每个字符之间添加空格。它不允许您将其分开为("ப ா")。因此,“பார்த்து”应该被分隔为“பா ர் த் து”。这是泰米尔语等语言中的正确分隔方式。这就是我在 VBA 中努力实现的。 泰米尔语的字符编码表在这里。 泰米尔语/印地语/许多印度语言有(1)辅音,(2)独立元音,(3)依赖元音标记,(4)两部分依赖元音标记。在这4种类型中,前两种是单独的字母,没有问题。但是后两种是依赖的,它们不应该与其联合字符分开。例如,字母பா (ப + ் ),它包含一个独立的 (ப) 和一个依赖的 (ா) 字母。
如果这些信息还不足够,请评论我需要发布更多什么内容。
(注:通过@Codo的MS链接,在C#.Net中可以实现此功能)
AddSpace
函数;特别是,它的参数来自哪里?据我所知,VBA在内部使用UCS-2? - JosefZ