日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java分割汉字_Java分割中英文,并且中文不能分割一半?

發布時間:2025/3/8 java 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java分割汉字_Java分割中英文,并且中文不能分割一半? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近準備入其他坑位。在面試過程中,遇到下面這題筆試題,拿出來分享分享。

題目:編寫一個截取字符串的函數,輸入為一個字符串和字節數,輸出為按字節截取的字符串。但是要保證漢字不被截半個,如“我ABC”4,應該截為“我AB”,輸入“我ABC漢DEF”,6,應該輸出為“我ABC”而不是“我ABC+漢的半個”。

思路:每個文件編碼格式不一致,如UTF-8、GBK等。其中,UTF-8 中文用三個字節表示,GBK 中文用兩個字節表示。并且中文的字節是負數的。可以根據這個原理,把字符串轉化為字節數組,判斷最后字符是否為中文。如果是英文,則直接分割返回。否則,循環遍歷字節數組,并作相應的負數統計并進行求模。

代碼實現:

package com.geshanzsq;

import java.io.UnsupportedEncodingException;

/**

* @author geshanzsq

*/

public class SubString {

public static void main(String[] args) throws UnsupportedEncodingException {

String srcStr1 = "我ABC";

String srcStr2 = "我ABC漢的DEF";

splitString(srcStr1, 4);

splitString(srcStr2, 6);

}

public static void splitString(String str,int size) throws UnsupportedEncodingException {

//判斷是否為空

if(str==null){

System.out.println("splitString is null");

return;

}

//判斷分割位置是否小于等于0

if(size<=0){

System.out.println("截取字節長度必須大于0");

return;

}

//默認UTF-8 中文一般三個字節表示,gbk兩個字節,UTF-8變化就是%3,gbk變化就是%3

byte[] bytes = str.getBytes("gbk");

//如果截取長度大于bytes長度,則直接打印字符串

if(size >= bytes.length){

System.out.println("splitString="+str);

return ;

}

//如果是中文,bytes為負數。最后一個不是中文,則直接分割

if(bytes[size-1] > 0){

String splitString = new String(bytes,0,size,"gbk");

System.out.println("splitString="+splitString);

return;

}

//字節負數統計并進行求模?

int num = 0;

//循環到需要分割的長度,后面的不需要

for(int i = 0 ; i < size; i++ ){

if(bytes[i]<0){

num++;

num = num % 2;

}

}

String splitString = new String(bytes,0,size-num,"gbk");

System.out.println("splitString="+splitString);

}

}

運行結果:

splitString=我AB

splitString=我ABC

總結

以上是生活随笔為你收集整理的java分割汉字_Java分割中英文,并且中文不能分割一半?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。