首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >把Kannada单词分割成音节簇

把Kannada单词分割成音节簇
EN

Stack Overflow用户
提问于 2017-06-01 12:23:41
回答 2查看 1.1K关注 0票数 8

我们想知道是否有任何方法来分割一个Kannada单词,以获得使用JavaScript的音节簇。

例如,我想把单词ಕನ್ನಡ分割成音节簇["ಕ", "ನ್ನ", "ಡ"]。但是当我用split拆分它时,实际得到的数组是["ಕ", "ನ", "್", "ನ", "ಡ"]

Example Fiddle

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-06-01 13:23:20

我不能说这是一个完整的解决办法。但在某种程度上对单词的形成有一些基本的理解:

代码语言:javascript
复制
var k = 'ಕನ್ನಡ';
var parts = k.split('');
arr = []; 
for(var i=0; i< parts.length; i++) {
  var s = k.charAt(i); 

  // while the next char is not a swara/vyanjana or previous char was a virama 
  while((i+1) < k.length && k.charCodeAt(i+1) < 0xC85 || k.charCodeAt(i+1) > 0xCB9 || k.charCodeAt(i) == 0xCCD) { 
    s += k.charAt(i+1); 
    i++; 
  } 
  arr.push(s);
}
console.log(arr);

正如代码中的注释所述,只要前面的字符不是swaravyanjana,或者以前的字符不是virama,我们就会一直在前一个字符后面添加字符。你可能需要用不同的词来确保你涵盖了不同的情况。这个特殊的案子不包括数字。

对于字符代码,您可以参考以下链接:http://www.unicode.org/charts/PDF/U0C80.pdf

票数 3
EN

Stack Overflow用户

发布于 2017-06-01 13:18:19

考虑使用与Unicode字符相关联的"inSC“属性--您可以从数据库中获得--这表明了Indic音节字符。(您也可以参考“类别”,看看它是否是“非间距标记”)。例如,“್”的类型为"Virama“(参见http://graphemica.com/0CCD)。举另一个例子,"ಿ”(KANNADA元音符号I)有一个InSC of "Vowel_Dependent“(也属于”非空格标记“)。然后,您可以检测哪些单独的图形需要与其他图形组合,并将完整的字符组合在一起,如下所示:

代码语言:javascript
复制
const graphemes = [..."ಕನ್ನಡ"];

console.log("graphemes are", graphemes);

const rebuild = [graphemes[0], graphemes.slice(1, 4).join(''), graphemes[4]];

console.log(rebuild);

即使你能做到这一点,你也有更多的工作要做。我不清楚你会如何检测到三个字符“ನ”,“”್“和"ನ”将被组合起来,而不是被视为两个字符"ನ್“和"ನ”。问题是,在这种情况下,virama被用来表示辅音簇,所以您需要识别X模式(其中V是virama),并将其作为一个组合字符来处理。可能还有很多这样的特殊情况。

这可能会引起人们的兴趣:https://www.microsoft.com/typography/OpenTypeDev/kannada/intro.htmj。它谈到寻找“音节集群”,在这个特殊的情况下,作为一个序曲,以图形化的字符。您可能还想看看http://www.unicode.org/L2/L2003/03068-kannada.pdf

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44307464

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档