2013-12-17 79 views
1

我有一個表格,用戶填寫和古吉拉特語數字數字(在古吉拉特語),例如。 ૧૪(這是14)。我想檢查輸入的古吉拉特語數是否小於(或૫૦)或不。大於或小於檢查古吉拉特語數字

我該如何在java和javascript中進行檢查?

+1

工作,因爲Gujrati工作的十進制系統上,你試圖簡單地用通常的阿拉伯數字替換的字符,然後進行檢查? – Manishearth

+0

@Manishearth我認爲他想要的就是完成這個單線。 – peterh

+1

僅在SOF上找到解決方案,http://stackoverflow.com/questions/8091373/locale-aware-number-conversion-in-javascript – Ankit

回答

4

您可以將其轉換爲小數並比較結果。

function gujaratiToDecimal (n) { 
    return n.split ("").reduce (function (sum,chr,index,array) { 
     var num = chr.charCodeAt (0) - 2790; //Subtract 2790 to get the decimal value for the current char 
     num *= Math.pow (10, array.length - index - 1); //Multiply it with a power of ten, based on its position 
     return sum + num //Sum it up 
    },0) 
} 
gujaratiToDecimal ("૫૦"); //50 
gujaratiToDecimal ("૧૪") < gujaratiToDecimal ("૫૦") //true 

這裏有一個JSFiddle

我想你可以很容易地把這一去渣。 - 剛安裝了IDE,繼承人Java版本

public int gujarati (String str) { 
    int len = str.length(); 
    int sum = 0; 
    for (int i=0; i < len; i++) { 
     sum += (str.charAt (i) - 2790) * Math.pow (10, len - i - 1); 
    } 
    return sum; 
} 
+2

使用Array.map()有一個更簡單的方法: return parseInt(num.split(「」)。map(function(a){return a.charCodeAt(0) - 2790;}).join(「」 )); – Synthetx

+0

@Synthetx:我同意,這使得代碼更小。 :) – Ankit

+0

@Synthetx這是完全正確的,但我認爲,更多的算術方法會比ducktyping一個更可讀/可翻譯:) – C5H8NNaO4

0

您可以簡單地使用一個Java腳本函數來填充與「gujrati」文本框相同的隱藏文本值。所以如果我是一個用戶,我輸入14,隱藏文本框應該填充14,然後你可以將它與50比較。我的快速思考可以有更好的意見。

+0

不會總是工作,用戶可以從某處複製粘貼數字(我不會不想限制)。 – Ankit

+0

你可以調用javascript或jquery函數在focusout或tabout上並填充隱藏框。 – user1177969

1

的字符輸入您可以獲取單碼值。您可以將這些值與0-9的值進行映射(例如,1個映射爲1)。基於這些,您可以將輸入古吉拉特語的號碼轉換成英文。

+0

@ C5H8NNaO4說我究竟是什麼:) –

1

我認爲這將在Java

public static int convertGujratiToEnglishNumber(String number) { 
     int len = number.length(); 
     StringBuilder englishNumber = new StringBuilder(); 
     for (int i = 0; i < len; i++) { 
      char c = number.charAt(i); 

      switch (c) { 
       case '१' : 
        englishNumber.append(1); 
        break; 
       case '२' : 
        englishNumber.append(2); 
        break; 

       case '३' : 
        englishNumber.append(3); 
        break; 
          .... 
          ..... until 9 or (९) 
       default : 
        break; 
      } 
     } 
     return Integer.parseInt(englishNumber.toString()); 
    } 
相關問題