2016-09-17 28 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一點解釋也會有幫助 –