我要讀從XML文件中阿拉伯字母,並顯示他們作爲一個詞如何加入阿拉伯字母組成單詞
輸入:سعادة 輸出:سعادة看起來像..
我不知道如何在任何語言中做什麼,讀什麼算法,我需要一些起點來完成這個任務
我也不確定我是否添加了正確的標記,請自由進行更改。
我要讀從XML文件中阿拉伯字母,並顯示他們作爲一個詞如何加入阿拉伯字母組成單詞
輸入:سعادة 輸出:سعادة看起來像..
我不知道如何在任何語言中做什麼,讀什麼算法,我需要一些起點來完成這個任務
我也不確定我是否添加了正確的標記,請自由進行更改。
對於裁判:http://en.wikipedia.org/wiki/Arabic_alphabet和http://en.wikipedia.org/wiki/Arabic_characters_in_Unicode
首先,我不知道很多關於阿拉伯語單詞的各種形式,我只是讀就可以了維基百科文檔(上面鏈接)。感謝您給我一個理由來閱讀它,但原諒我,如果我完全搞砸了: - )...
這個問題似乎是映射到正確的「案件」的基礎上它的位置字,對嗎?我基於您在示例中顯示的更改。無論如何,用英文來說,這就像第一個字母的大寫字母。在阿拉伯語中,似乎有4個字符的情況(開始,中間,結束和隔離)。如果這是正確的,這裏是C#中的一個例子,它是這樣映射的:
class ArabicMapper
{
enum CaseMap{End=0, Middle=1, Beginning=2, Isolated=3};
Dictionary<char, char[]> charMap; // This maps base letters to one of their four cases.
public ArabicMapper()
{
//Create the char map for each letter in the alphabet. {BaseLetter, {End, Middle, Beginning, Isolated}}
charMap = new Dictionary<char, char[]>();
charMap.Add(0627, new char[] { FE8D, 0627, 0627, FE8E }); // ʾalif : Not sure of the rules for middle/beginning, so just using the isolated...
charMap.Add(0628, new char[] { FE90, FE92, FE91, FE8F }); // bāʾ :
//... and so on for each char ...
}
public string charsToWord(char[] word)
{
if (word.Length >= 2)
{
StringBuilder finalWord = new StringBuilder();
for(int i=0; i<word.Length; i++)
{
if (i == 0)
finalWord.Append((charMap[word[i]])[CaseMap.Beginning]);
else if(i == word.Length-1)
finalWord.Append((charMap[word[i]])[CaseMap.End]);
else
finalWord.Append((charMap[word[i]])[CaseMap.Middle]);
}
return finalWord.ToString();
}
else
{
(charMap[word[0]])[CaseMap.Isolated].ToString();
}
}
}
P.S.我沒有測試這個代碼,所以它可能無法正常工作。請把它當作僞代碼。
鑑於這個問題被標記爲一個算法,我的假設是你想要一個樣本算法。儘管我缺乏阿拉伯語的知識,但我確信這是不正確的。但是,如果你在尋找一個通用的工程解決方案(即你沒有業務需求來編寫你自己的),你應該使用系統提供的庫作爲其他海報建議。 – eSniff
除非你被授權編寫系統GUI級別渲染/佈局引擎,否則eSniff的回答幾乎肯定是而不是你想做什麼。阿拉伯文字母的這種組合將由開窗系統爲您完成,如在the Wikipedia page上簡要介紹的那樣。在幾乎所有情況下,您都應該避免使用阿拉伯語表示形式的字符代碼點。只需要一個基本的Unicode阿拉伯語代碼點字符串,並將它們發送到您的用戶界面中的文本字段,他們將被正確渲染....
X11不適合你。有X11的圖書館爲你做,而現代 –
我認爲幾乎每個系統都會自動做到這一點。也許如果你給了更多的細節(你使用什麼系統,如何顯示單詞等)。 – JJJ