在ArcGIS屬性表中,如果是Shape文件,其他字段名稱長度不能超過10個字符(一個漢字算兩個字條),如果是在數據庫中的文件,其他字符名稱長度就可超過10個字符。
在我的記憶中,中文字符應該算兩個字符,實際在C#中,不管中文、英文、全角、半角,其他長度都是相同的。如:
string s1 = "四川"; string s2 = "sc"; Console.WriteLine(s1.Length); Console.WriteLine(s2.Length);
結果:2 ,2(第一個結果不是4)
那么,現在要判斷字段名是否大於10,顯然,用string.Length方法不可行。可以使用的方法有:
方法一:字節計算法
通過求字符串字節來判斷,一個漢字占兩個字節,一個字母占一個字節。
Encoding.Default.GetByteCount(s)>10
方法二:轉換替換法
將原字符串中的中文用英文替換,再來判斷長度。這其中要使用正則表達式。
s.replace(/[^\x00-\xff]/g,"**").length
方法三:ASSIC碼法
通過判斷ASSIC來判斷是否是漢字,如果是漢字計兩個長度,如果不是則計一個長度。