2016-09-17 39 views
1

我正在做一个简单的函数,应该从阿拉伯文字删除tashkeel,替换技术适用于英文,但不适用于阿拉伯文,你会建议什么?如何从lua中的字符串中删除tashkeel?

Lua代码: -

function replacePartOfString(arg,old,new) 
    local zzz = arg.gsub(arg, old, new) 
    return zzz 
end 

function wordLengthIgnoringTashkeel(arg) 
    local tashkeelArray = {"َ","ً","ُ","ٌ","ِ","ٍ","ْ","َ"} 

    local tempWord = arg 

    print("tempWord Before"..tempWord) 
    for x=1,#tashkeelArray do 
     replacePartOfString(tempWord,tashkeelArray[x],"") 
    end 
    print("tempWord After"..tempWord) 
end 

结果

tempWordاليوم前tempWord后اليوم

而预期结果

预期的结果

tempWordاليوم前tempWord后اليوم

+0

你为什么把android和ios标签? – jonathanrz

+1

你忘记捕捉你的函数返回的结果:'tempWord = replacePartOfString(...)' –

+0

@jonathanrz:因为我使用corona sdk。 – DeyaEldeen

回答

2

这个作品

function replacePartOfString(arg,old,new) 
    return arg.gsub(arg, old, new) 
end 

function wordLengthIgnoringTashkeel(arg) 
    local tashkeelArray = {"َ","ً","ُ","ٌ","ِ","ٍ","ْ","َّ"} 
    local tempWord = arg 
    for x=1,#tashkeelArray do 
     tempWord = replacePartOfString(tempWord,tashkeelArray[x],"") 
    end 
    return #tempWord 
end 
+0

我想我的答案与你的答案是一样的,但如果你接受它会很好。我有一个类似的问题,我想要向谷歌发送阿拉伯字母,但它没有奏效。我必须制作一个本地字符表并将数字发送到谷歌并打印相应的表格值。我可以告诉你,这个问题是由于卢阿处理的阿拉伯文字可能是非标准的。 – Amir

1

功能wordLengthIgnoringTashkeel(ARG) 当地tashkeelArray = { “”, “”, “”, “”,” “ ”“, ”“, ”“}

本地tempWord = ARG

打印(” tempWord BEF矿石” .. tempWord) 对于x = 1,#tashkeelArray DO tempWord = string.gsub(tempWord,tashkeelArray [X], “”) 端 打印( “tempWord后” .. tempWord) 端

wordLengthIgnoringTashkeel(“يوم”)

+1

您可以通过格式化来改善您的答案,在您的情况下,通过添加4个空格来添加代码块。 http://stackoverflow.com/editing-help一点解释也会有帮助 –