2011-09-11 62 views
4

我要讀從XML文件中阿拉伯字母,並顯示他們作爲一個詞如何加入阿拉伯字母組成單詞

輸入:سعادة 輸出:سعادة看起來像..

我不知道如何在任何語言中做什麼,讀什麼算法,我需要一些起點來完成這個任務

我也不確定我是否添加了正確的標記,請自由進行更改。

+1

我認爲幾乎每個系統都會自動做到這一點。也許如果你給了更多的細節(你使用什麼系統,如何顯示單詞等)。 – JJJ

回答

0

對於裁判:http://en.wikipedia.org/wiki/Arabic_alphabethttp://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.我沒有測試這個代碼,所以它可能無法正常工作。請把它當作僞代碼。

+0

鑑於這個問題被標記爲一個算法,我的假設是你想要一個樣本算法。儘管我缺乏阿拉伯語的知識,但我確信這是不正確的。但是,如果你在尋找一個通用的工程解決方案(即你沒有業務需求來編寫你自己的),你應該使用系統提供的庫作爲其他海報建議。 – eSniff

3

除非你被授權編寫系統GUI級別渲染/佈局引擎,否則eSniff的回答幾乎肯定是而不是你想做什麼。阿拉伯文字母的這種組合將由開窗系統爲您完成,如在the Wikipedia page上簡要介紹的那樣。在幾乎所有情況下,您都應該避免使用阿拉伯語表示形式的字符代碼點。只需要一個基本的Unicode阿拉伯語代碼點字符串,並將它們發送到您的用戶界面中的文本字段,他們將被正確渲染....

+0

X11不適合你。有X11的圖書館爲你做,而現代 –