[問題] String分割問題

看板java作者 (傑洛尼莫)時間7年前 (2017/04/24 20:30), 編輯推噓1(1015)
留言16則, 5人參與, 最新討論串1/5 (看更多)
大家好 請問String要如何以Byte分割? 舉例來說 String a="ABC安"; 想要將a以2byte來分割 可是當尾巴剛好遇到中文字時 若無法分割,則換下一個字串 結果就會變成a[0]="AB",a[1]="C",a[2]="安" 這樣 請問有辦法辦到嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.243.28.56 ※ 文章網址: https://www.ptt.cc/bbs/java/M.1493037024.A.7C7.html

04/24 20:41, , 1F
java預設每個字元不就兩個byte了嗎?
04/24 20:41, 1F

04/24 20:43, , 2F
char是2byte
04/24 20:43, 2F

04/24 20:46, , 3F
不談byte數,你規則寫出來,不就照規則寫個迴圈做就好?
04/24 20:46, 3F

04/24 20:53, , 4F
我的意思是每個字串2byte,可是如果這個字串已經有一個英
04/24 20:53, 4F

04/24 20:54, , 5F
文字了,接下來那個字是中文不就塞不進去,需要到下一個字
04/24 20:54, 5F

04/24 20:54, , 6F
串,想請問JAVA中有沒有什麼涵式可以解決這種問題
04/24 20:54, 6F

04/24 21:14, , 7F
英文就是2 byte
04/24 21:14, 7F

04/24 21:33, , 8F
英文字不是1byte嗎
04/24 21:33, 8F

04/24 21:48, , 9F
不是
04/24 21:48, 9F

04/24 21:50, , 10F
String.getBytes()自己實驗看看便知
04/24 21:50, 10F

04/24 22:00, , 11F
getBytes是編碼後的結果,不一定...
04/24 22:00, 11F

04/24 22:01, , 12F
中文系統的話大概會用MS950變成英文1byte 中文2byte
04/24 22:01, 12F

04/24 22:01, , 13F
String本身其實本來就沒有byte數的概念,就是以char為單位
04/24 22:01, 13F

04/24 22:03, , 14F
只是java char在記憶體中是UTF-16
04/24 22:03, 14F

04/24 23:51, , 15F
用Character.isIdeographic去判斷中日韓
04/24 23:51, 15F

04/25 01:12, , 16F
因為剛接觸java很多不懂,所以才會誤以為英文就是1byte
04/25 01:12, 16F
文章代碼(AID): #1O_U_WV7 (java)
討論串 (同標題文章)
文章代碼(AID): #1O_U_WV7 (java)