已答覆 請問中文字位元數判斷

  • 2008年9月15日 上午 02:42
     
     

    抱歉我是初學者

    我用javascript

    請問我要如何判斷中文字使他不會位移

    若是有一串資料30個byte我要拿其中一個固定值來做判斷 例如這串資料是sData = 12345678901234567890+abcdefghi那們

    if(sData.substr(20,1) == "+")

    {

    alert("正確得到")

    }

    答案結果會出現   "正確得到"四個字

    但是

    若是資料前面有中文字時例如sData = 12妳好78901234567890+abcdefghi

    我若是用(sData.substr(20,1)則抓到的值卻是"b"

    我用debugger發現 程式抓到"+"號的位子會在sData.substr(18,1) 它把中文字當做一個byte運算

    我要如何正確抓到"+"號位子呢 因為前面的中文字若是多一位數或是少一位數"+"號的位子都會不一樣我如何正確讀取那個+號呢

    還有麻煩告訴我ㄧ下為什麼我做debugger的時候他會判斷中文字為ㄧ個byte呢 是因為他是unicode嗎?

解答

  • 2008年9月15日 上午 03:07
     
     已答覆

    在 JavaScript 中,一個中文字的長度會是 1,例如:
    alert("大家好".length)
    會顯示 3,而非 6

    所以在 JavaScript 裡,會使用 charCodeAt 這個函數來判斷某個位置的字元是否為中文字,若是中文字,其回傳的值會大於 128

     

    如果你只是要取得 + 的位置,可以使用 indexOf