java截取字符串有漢字的,java截取帶有漢字的字符串

本文目錄一覽:

java截取中文字符串。

public static void main(String args[])

{

String str=”看看以下回答是否解決了您的疑問” ;

//提取子字符串,頭一個表示開頭的索引(包括),後一個表示結束的索引(不包括)

//索引是在字符串的位置,從0開始

//str.substring(0, 7)表示從第0位到第6位(因為不包含第七位)

//英文字符串也是類似的

String substr = str.substring(0, 7) ;

System.out.println(substr);

}

求截取帶中文的字符串的java方法。

樓主你好,很高興能回答你這個很有挑戰性的問題,首先我談談我對上面9個例子的理解,即這個方法應該實現的功能:

這個方法與JDK String原有的方法substring是有區別的,在這個方法里,一個中文漢字相當於佔2個英文字符的位置。而且根據方法傳入的參數pStart和pEnd在返回相應的子字符串child

如果pstart剛好在某個漢字的前半部分,則child應包含該漢字,在後部分則不含。與之相對應的是pEnd如果在某個漢字的後半部分,則child應含該漢字,否則不包含,如果pStart超出pStr的長度(這裡一個漢字長度算2),則返回空,其他性質和JDK的性質形同。

如果覺得我的理解不錯,且看下面的代碼:

public class Test{

public Test(){

String str=”ABCDE”;

String str2=”ABC你D”;

String str3=”A你B好C嗎勇DE”;

System.out.println(“1 str=’ABCDE’ start=1 end=5 結果:”+getSubString(str,1,5));

System.out.println(“2 str=’ABCDE’ start=1 end=4 結果:”+getSubString(str,1,4));

System.out.println(“3 str=’ABCDE’ start=2 end=4 結果:”+getSubString(str,2,4));

System.out.println(“4 str=’ABCDE’ start=6 end=7 結果:”+getSubString(str,6,7));

System.out.println(“5 str=’ABCDE’ start=5 end=5 結果:”+getSubString(str,5,5));

System.out.println(“6 str2=’ABC你D’ start=1 end=3 結果:”+getSubString(str2,1,3));

System.out.println(“7 str2=’ABC你D’ start=1 end=4 結果:”+getSubString(str2,1,4));

System.out.println(“8 str2=’ABC你D’ start=1 end=5 結果:”+getSubString(str2,1,5));

System.out.println(“9 str2=’ABC你D’ start=4 end=4 結果:”+getSubString(str2,4,4));

System.out.println(“10 str3=’A你B好C嗎勇DE’ start=9 end=10 結果:”+getSubString(str3,9,10));

}

public static void main(String args[]){

new Test();

}

public String getSubString(String str,int pstart,int pend){

String resu=””;

int beg=0;

int end=0;

int count1=0;

char[] temp=new char[str.length()];

str.getChars(0,str.length(),temp,0);

boolean[] bol=new boolean[str.length()];

for(int i=0;itemp.length;i++){

bol[i]=false;

if((int)temp[i]255){//說明是中文

count1++;

bol[i]=true;

}

}

if(pstartstr.length()+count1){

resu=null;

}

if(pstartpend){

resu=null;

}

if(pstart1){

beg=0;

}else{

beg=pstart-1;

}

if(pendstr.length()+count1){

end=str.length()+count1;

}else{

end=pend;//在substring的末尾一樣

}

//下面開始求應該返回的字符串

if(resu!=null){

if(beg==end){

int count=0;

if(beg==0){

if(bol[0]==true)

resu=null;

else

resu=new String(temp,0,1);

}else{

int len=beg;//zheli

for(int y=0;ylen;y++){//表示他前面是否有中文,不管自己

if(bol[y]==true)

count++;

len–;//想明白為什麼len–

}

//for循環運行完畢後,len的值就代表在正常字符串中,目標beg的上一字符的索引值

if(count==0){//說明前面沒有中文

if((int)temp[beg]255)//說明自己是中文

resu=null;//返回空

else

resu=new String(temp,beg,1);

}else{//前面有中文,那麼一個中文應與2個字符相對

if((int)temp[len+1]255)//說明自己是中文

resu=null;//返回空

else

resu=new String(temp,len+1,1);

}

}

}else{//下面是正常情況下的比較

int temSt=beg;

int temEd=end-1;//這裡減掉一

for(int i=0;itemSt;i++){

if(bol[i]==true)

temSt–;

}//循環完畢後temSt表示前字符的正常索引

for(int j=0;jtemEd;j++){

if(bol[j]==true)

temEd–;

}//循環完畢後temEd-1表示最後字符的正常索引

if(bol[temSt]==true)//說明是字符,說明索引本身是漢字的後半部分,那麼應該是不能取的

{

int cont=0;

for(int i=0;i=temSt;i++){

cont++;

if(bol[i]==true)

cont++;

}

if(pstart==cont)//是偶數不應包含,如果pstartcont則要包含

temSt++;//從下一位開始

}

if(bol[temEd]==true){//因為temEd表示substring 的最面參數,此處是一個漢字,下面要確定是否應該含這個漢字

int cont=0;

for(int i=0;i=temEd;i++){

cont++;

if(bol[i]==true)

cont++;

}

if(pendcont)//是漢字的前半部分不應包含

temEd–;//所以只取到前一個

}

if(temSt==temEd){

resu=new String(temp,temSt,1);

}else if(temSttemEd){

resu=null;

}else{

resu=str.substring(temSt,temEd+1);

}

}

}

return resu;//返回結果

}

}

測試結果如圖,並且可以任意修改字符串,保證結果正確。

That’s all !

java怎麼把字符串中的的漢字取出來

1.判斷字符串是否全是漢字。

String str1 = “java判斷是否為漢字”

String str2 = “全為漢字”

String reg = “[\\u4e00-\\u9fa5]+”

boolean result1 = str1.matches(reg)//false

boolean result2 = str2.matches(reg)//true

2.提取字符串中的漢字。

String str = “java怎麼把asdasd字符串中的asdasd的漢字取出來”

String reg = “[^\u4e00-\u9fa5]”

str = str.replaceAll(reg, ” “)

System.out.println(str)

3.判斷字符串中是否含有漢字。

boolean result = (str.length() == str.getBytes().length)//true:無漢字  false:有漢字

4.獲取字符串中漢字的個數。

int count = 0

String reg = “[\\u4e00-\\u9fa5]”

String str = “java獲取漢字Chinese的個數”

Pattern p = Pattern.compile(reg)

Matcher m = p.matcher(str)

while (m.find()) {for (int i = 0; i = m.groupCount(); i++) {count = count + 1}}

System.out.println(“共有漢字 ” + count + “個 “)

java語言中如何獲取字符串中漢字的個數

【實例描述】

字符串中可以包含數字,字母、漢字或者其他字符。使用Character類的isDigit()方法可以判斷字符中的某個字符是否為數字,使用Character類的isLetter()方法可以判斷字符中的某個字符是否為字母。實例中將介紹一種方法用來判斷字符串中的某個字符是否為漢字,通過此方法可以計算字符串中漢字的數量。實例的運行效果如圖4.24所示。

【實現過程】

在Eclipse中新建項目ChineseCharacter,並在其中創建一個ChineseCharacter.java文件。在該類的主方法中創建標準輸入流的掃描器對象,接收用戶輸入的字符串。我們在程序中使用matches()方法來統計該字符串中漢字的個數。核心代碼如下所示:

protectedvoiddo_button_actionPerformed(ActionEvente){Stringtext=chineseArea.getText();//獲取用戶輸入intamount=0;//創建漢字數量計數器for(inti=0;itext.length();i++){//遍歷字符串每一個字符//使用正則表達式判斷字符是否屬於漢字編碼booleanmatches=Pattern.matches(“^[\u4E00-\u9FA5]{0,}$”,””+text.charAt(i));if(matches){//如果是漢字amount++;//累加計數器}}umField.setText(amount+””);//在文本框顯示漢字數量}

【代碼解析】

本實例的關鍵點在於正則表達式的使用。Java提供了Pattern用於正則表達式的編譯表示形式,該類提供的靜態方法matches()可以執行正則表達式的匹配。該方法編譯給定正則表達式並嘗試給定輸入與其匹配。如果要匹配的字符序列與正則表達式匹配則返回true,否則返回false。其聲明語法如下:

publicstaticbooleanmatches(Stringregex,CharSequenceinput);【知識擴展】

使用正則表達式可以方便地進行字符串操作,正則表達式經常被用來驗證用戶輸入的信息,如可以判斷用戶輸入的格式是否正確。本實例中使用正則表達式來判斷用戶輸入的字符串是否為漢字,如果為漢字則計數器加1,最後得到字符串中所有漢字的數量。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/193640.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-01 15:02
下一篇 2024-12-01 15:02

相關推薦

  • Java JsonPath 效率優化指南

    本篇文章將深入探討Java JsonPath的效率問題,並提供一些優化方案。 一、JsonPath 簡介 JsonPath是一個可用於從JSON數據中獲取信息的庫。它提供了一種DS…

    編程 2025-04-29
  • java client.getacsresponse 編譯報錯解決方法

    java client.getacsresponse 編譯報錯是Java編程過程中常見的錯誤,常見的原因是代碼的語法錯誤、類庫依賴問題和編譯環境的配置問題。下面將從多個方面進行分析…

    編程 2025-04-29
  • Python字符串寬度不限制怎麼打代碼

    本文將為大家詳細介紹Python字符串寬度不限制時如何打代碼的幾個方面。 一、保持代碼風格的統一 在Python字符串寬度不限制的情況下,我們可以寫出很長很長的一行代碼。但是,為了…

    編程 2025-04-29
  • Java騰訊雲音視頻對接

    本文旨在從多個方面詳細闡述Java騰訊雲音視頻對接,提供完整的代碼示例。 一、騰訊雲音視頻介紹 騰訊雲音視頻服務(Cloud Tencent Real-Time Communica…

    編程 2025-04-29
  • Java Bean加載過程

    Java Bean加載過程涉及到類加載器、反射機制和Java虛擬機的執行過程。在本文中,將從這三個方面詳細闡述Java Bean加載的過程。 一、類加載器 類加載器是Java虛擬機…

    編程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介紹

    本文將詳細介紹Java Milvus SearchParam withoutFields的相關知識和用法。 一、什麼是Java Milvus SearchParam without…

    編程 2025-04-29
  • Python中將字符串轉化為浮點數

    本文將介紹在Python中將字符串轉化為浮點數的常用方法。在介紹方法之前,我們先來思考一下這個問題應該如何解決。 一、eval函數 在Python中,最簡單、最常用的將字符串轉化為…

    編程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java語言中的一個版本,於2014年3月18日發佈。本文將從多個方面對Java 8中某一周的周一進行詳細的闡述。 一、數組處理 Java 8新特性之一是Stream…

    編程 2025-04-29
  • Java判斷字符串是否存在多個

    本文將從以下幾個方面詳細闡述如何使用Java判斷一個字符串中是否存在多個指定字符: 一、字符串遍歷 字符串是Java編程中非常重要的一種數據類型。要判斷字符串中是否存在多個指定字符…

    編程 2025-04-29
  • VSCode為什麼無法運行Java

    解答:VSCode無法運行Java是因為默認情況下,VSCode並沒有集成Java運行環境,需要手動添加Java運行環境或安裝相關插件才能實現Java代碼的編寫、調試和運行。 一、…

    編程 2025-04-29

發表回復

登錄後才能評論