截取字符串,含有漢字和字母,不能截半個漢字


原文地址: http://blog.csdn.net/dreameer_dd/article/details/73457593

/**
* 2017年6月19日 * * 問題描述: * 編寫一個截取字符串的函數,輸入為一個字符串和字節數, * 輸出為按字節截取的字符串。但是要保證漢字不被截半個, * 如"我ABC"4,應該截為"我AB", * 輸入"我ABC漢DEF",6,應該輸出為"我ABC"而不是"我ABC+漢的半個"。 * * 問題考察: * 1.字符串長度(字符數)與字節數的區別 * 2.英文只占一個字節,中文占兩個字節或者3個字節 */ public class TestCut { public static void main(String[] args) { String str="我ABC漢DEF"; str=cutString(str,6); System.out.println("截取的字符串:"+str); } //通過字節數截取字符串 private static String cutString(String str, int i) { String tempStr=null; StringBuilder resultStr=new StringBuilder(); int len=0; int sum=0; for(int j=0;j<str.length();j++){ tempStr=String.valueOf(str.charAt(j)); len=tempStr.getBytes().length; //判斷是否是漢字 if(len>1){ sum=sum+len; //判斷字節數是否已越界 if(sum<=i){ resultStr.append(tempStr); }else{ break; } }else{ sum=sum+1; if(sum<=i){ resultStr.append(tempStr); }else{ break; } } } return resultStr.toString(); } } 解決思路:1.通過字節數來判斷是否中文(正如我上面使用的) 2.中文的ASCII碼是負數 面試的時候遇到這道題、居然不知道怎么做。可能前一段時間都在搞三大框架還有其他技術,卻丟了Java基礎,結果面試處處碰壁。 基礎的東西很重要~ 慎記 2017-11-29
我是十一月面試的,和博主碰到了相同的問題,難道我兩面試過同一家公司
轉載過來

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM