语法
让我们快速介绍一下语法:The Devanagari Block。 作为开发人员,您需要关注两个字符类:
- 标志:这是一个影响先前出现的字符的字符。例如,这个字符:
्。浅色圆圈表示要放置的角色中心的位置。
- 字母/元音/其他:这是一个可能受符号影响的字符。例如,这个字符:
क。
् 和क 的组合结果:क्。但是组合可以扩展,所以क्和षति实际上会变成क्षति(在这种情况下,我们将第一个字符向右旋转90度,修改一些时尚元素,并将其附加在左侧第二个字符)。
我在这里的回答不是解决这些无限(并且非常漂亮)组合的情况,而是简单地解决单数字母的集群和/或单数字母的集群及其影响的符号字符。如果我们在想“这个梵文字符串的字符是什么?”,那么这是正确的方法,否则任何字母组合都会形成一个唯一长度的唯一字符,然后大多数与字母系统相关的概念和算法将失败。
因此,例如,一个符号词将是......
(letter) (letter) (sign) (sign) (letter) (sign)
在这种情况下,你会想要结果...
[
0=>(letter),
1=>(letter) (sign) (sign),
2=>(letter) (sign),
]
守则
那么逻辑还不错,只需做一个反向循环的foreach循环即可。
我知道这是下面的 JavaScript 代码,但同样的原则也适用。设置sign-types...
function getEndWordGroupings() {return {'2304':true,'2305':true,'2306':true,'2307':true,'2362':true,'2363':true,'2364':true,'2365':true,'2366':true,'2367':true,'2368':true,'2369':true,'2370':true,'2371':true,'2372':true,'2373':true,'2374':true,'2375':true,'2376':true,'2377':true,'2378':true,'2379':true,'2380':true,'2381':true,'2382':true,'2383':true,'2385':true,'2386':true,'2389':true,'2390':true,'2391':true,'2402':true,'2403':true,'2416':true,'2417':true,};}
并将字符串转换为字符...
function stringToChars(args) {
var word = args.word;
var chars = [];
var endings = getEndWordGroupings();
var incluster = false;
var cluster = '';
var whitespace = new RegExp("\\s+");
for(var i = word.length - 1; i >= 0; i--) {
var character = word.charAt(i);
var charactercode = word.charCodeAt(i);
if(incluster) {
if(whitespace.test(character)) {
incluster = false;
chars.push(cluster);
cluster = '';
} else if(endings[charactercode]) {
chars.push(cluster);
cluster = character;
} else {
incluster = false;
cluster = character + cluster;
chars.push(cluster);
cluster = '';
}
} else if(endings[charactercode]) {
incluster = true;
cluster = character;
} else if(whitespace.test(character)) {
incluster = false;
chars.push(cluster);
cluster = '';
} else {
chars.push(character);
}
}
if(cluster.length > 0) {
chars.push(cluster);
}
return chars.reverse();
}
console.log(stringToChars({'word':'क्षऀति'}));</script>
结果
输出:
["क्", "षऀ", "ति"]
如果我使用普通解析,输出将是
["क", "्", "ष", "त", "ि"]
提示:看到上面两个带有浅色圆圈的标志了吗?那个浅圆圈表示符号影响的字符的位置。回顾转换后的翻译,很容易看出这些字母是如何组合成新字符的。整洁!