『壹』 java 怎麼截取指定長度的中文數字串
通過char值去判斷字元串裡面的漢字,在截取的范圍內,每出現一個漢字,截取時長度+1
『貳』 java中如何截取字元串
截取字元串採用的是java中的split函數。
例把「01:大眾汽車」截取為01和大眾汽車,代碼如下:
package test;
public class substringTest
{
public static void main(String args[])
{
String N = "01:大汽車";
String L="";
String R="";
int k= N.length();
for (int i = 0; i < N.length(); i++)
{
if (N.substring(i, i + 1).equals("|"))
{
L=N.substring(0,i).trim();
R=N.substring(i+1,k).trim();
}
else
{
}
System.out.println(L);
System.out.println(R);
}
}
}
『叄』 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截取字元串
public class StringTest {
public static void main(String[] args) {
String string = "file:/C:/Users/Administrator.SC-201805071245/Desktop/新建文件夾/demo-0.0.1-SNAPSHOT.jar!/BOOT-INF/classes!/";
String substr = string.substring(string.indexOf("/")+1, string.substring(0, string.lastIndexOf(".jar")).lastIndexOf("/")+1);
System.out.println(substr);
}
}
『伍』 java截取指定字元串中的某段字元如何實現
如下圖,給你貼出了代碼段。可以利用字元串的substring函數來進行截取。
結果是:456789(注意:包括4。)
示例:
"hamburger".substring(3,8) returns "burge"
"smiles".substring(0,5) returns "smile"
『陸』 java截取字元串函數
這個程序是通過先把字元串轉換為byte 數組然後根據你要截取的字元串長度截取字元串的。
byte bt[] = str.getBytes(); //轉化為位元組數組。
if(bt[byteNum]<0)//判斷截取的長度,截取的長度不能是否小於0
{
String substrx=new String(bt,0,--byteNum);
/*String(byte[] ascii, int hibyte)
已過時。 該方法無法將位元組正確轉換為字元。從 JDK 1.1 起,完成該轉換的首選方法是通過 String 構造方法,該方法接受一個字元集名稱或使用平台的默認字元集。*/
//建議: 學習的時候多看看API
『柒』 求截取帶中文的字元串的java方法。
樓主你好,很高興能回答你這個很有挑戰性的問題,首先我談談我對上面9個例子的理解,即這個方法應該實現的功能:
這個方法與JDKString原有的方法substring是有區別的,在這個方法里,一個中文漢字相當於佔2個英文字元的位置。而且根據方法傳入的參數pStart和pEnd在返回相應的子字元串child
如果pstart剛好在某個漢字的前半部分,則child應包含該漢字,在後部分則不含。與之相對應的是pEnd如果在某個漢字的後半部分,則child應含該漢字,否則不包含,如果pStart超出pStr的長度(這里一個漢字長度算2),則返回空,其他性質和JDK的性質形同。
如果覺得我的理解不錯,且看下面的代碼:
publicclassTest{
publicTest(){
Stringstr="ABCDE";
Stringstr2="ABC你D";
Stringstr3="A你B好C嗎勇DE";
System.out.println("1str='ABCDE'start=1end=5結果:"+getSubString(str,1,5));
System.out.println("2str='ABCDE'start=1end=4結果:"+getSubString(str,1,4));
System.out.println("3str='ABCDE'start=2end=4結果:"+getSubString(str,2,4));
System.out.println("4str='ABCDE'start=6end=7結果:"+getSubString(str,6,7));
System.out.println("5str='ABCDE'start=5end=5結果:"+getSubString(str,5,5));
System.out.println("6str2='ABC你D'start=1end=3結果:"+getSubString(str2,1,3));
System.out.println("7str2='ABC你D'start=1end=4結果:"+getSubString(str2,1,4));
System.out.println("8str2='ABC你D'start=1end=5結果:"+getSubString(str2,1,5));
System.out.println("9str2='ABC你D'start=4end=4結果:"+getSubString(str2,4,4));
System.out.println("10str3='A你B好C嗎勇DE'start=9end=10結果:"+getSubString(str3,9,10));
}
publicstaticvoidmain(Stringargs[]){
newTest();
}
publicStringgetSubString(Stringstr,intpstart,intpend){
Stringresu="";
intbeg=0;
intend=0;
intcount1=0;
char[]temp=newchar[str.length()];
str.getChars(0,str.length(),temp,0);
boolean[]bol=newboolean[str.length()];
for(inti=0;i<temp.length;i++){
bol[i]=false;
if((int)temp[i]>255){//說明是中文
count1++;
bol[i]=true;
}
}
if(pstart>str.length()+count1){
resu=null;
}
if(pstart>pend){
resu=null;
}
if(pstart<1){
beg=0;
}else{
beg=pstart-1;
}
if(pend>str.length()+count1){
end=str.length()+count1;
}else{
end=pend;//在substring的末尾一樣
}
//下面開始求應該返回的字元串
if(resu!=null){
if(beg==end){
intcount=0;
if(beg==0){
if(bol[0]==true)
resu=null;
else
resu=newString(temp,0,1);
}else{
intlen=beg;//zheli
for(inty=0;y<len;y++){//表示他前面是否有中文,不管自己
if(bol[y]==true)
count++;
len--;//想明白為什麼len--
}
//for循環運行完畢後,len的值就代表在正常字元串中,目標beg的上一字元的索引值
if(count==0){//說明前面沒有中文
if((int)temp[beg]>255)//說明自己是中文
resu=null;//返回空
else
resu=newString(temp,beg,1);
}else{//前面有中文,那麼一個中文應與2個字元相對
if((int)temp[len+1]>255)//說明自己是中文
resu=null;//返回空
else
resu=newString(temp,len+1,1);
}
}
}else{//下面是正常情況下的比較
inttemSt=beg;
inttemEd=end-1;//這里減掉一
for(inti=0;i<temSt;i++){
if(bol[i]==true)
temSt--;
}//循環完畢後temSt表示前字元的正常索引
for(intj=0;j<temEd;j++){
if(bol[j]==true)
temEd--;
}//循環完畢後temEd-1表示最後字元的正常索引
if(bol[temSt]==true)//說明是字元,說明索引本身是漢字的後半部分,那麼應該是不能取的
{
intcont=0;
for(inti=0;i<=temSt;i++){
cont++;
if(bol[i]==true)
cont++;
}
if(pstart==cont)//是偶數不應包含,如果pstart<cont則要包含
temSt++;//從下一位開始
}
if(bol[temEd]==true){//因為temEd表示substring的最面參數,此處是一個漢字,下面要確定是否應該含這個漢字
intcont=0;
for(inti=0;i<=temEd;i++){
cont++;
if(bol[i]==true)
cont++;
}
if(pend<cont)//是漢字的前半部分不應包含
temEd--;//所以只取到前一個
}
if(temSt==temEd){
resu=newString(temp,temSt,1);
}elseif(temSt>temEd){
resu=null;
}else{
resu=str.substring(temSt,temEd+1);
}
}
}
returnresu;//返回結果
}
}
測試結果如圖,並且可以任意修改字元串,保證結果正確。
That'sall!
『捌』 java 截取字元串第一個字元
使用substring() 方法返回字元串的子字元串。詳細解析如下:
1、語法:
(1)public String substring(int beginIndex)。
(2)public String substring(int beginIndex, int endIndex)。
2、參數:
(1)beginIndex -- 起始索引(包括), 索引從 0 開始。
(2)endIndex -- 結束索引(不包括)。
3、返回值:
返回一個新字元串,它是此字元串的一個子字元串。該子字元串從指定的 beginIndex 處開始,一直到索引 endIndex - 1處的字元。因此,該子字元串的長度為 endIndex-beginIndex。
4、substring函數存在的拋出錯誤:
IndexOutOfBoundsException - 如果 beginIndex 為負,或 endIndex 大於此 String 對象的長度,或 beginIndex 大於 endIndex。
5、實例代碼如下: