android 指定位置截取、插入字符串

本文详细介绍了在编程中如何高效地进行字符串操作,包括插入字符、截取特定部分、处理字符串长度等实用技巧,适用于多种场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、字符串中插入字符

    public void test() {
        String str = "20191011";
        StringBuilder sb = new StringBuilder(str);
        Log.d("字符串:", "" + sb.toString() + " 字符长度:" + sb.length());
        sb.insert(4,"-");
        sb.insert(7,"-");
        Log.d("字符转换", "" + sb.toString() + " 字符长度:" + sb.length());
    }

    结果:
    2019-10-11 10:28:09.367 3633-3633/字符串:: 20191011 字符长度:8
    2019-10-11 10:28:09.367 3633-3633/字符转换: 2019-10-11 字符长度:10

2、字符开头与结尾插入字符

    public void test() {
        String str = "20191011";
        StringBuilder sb = new StringBuilder(str);
        Log.d("字符串:", "" + sb.toString() + " 字符长度:" + sb.length());
        sb.insert(0, "\"");                 //开头插入字符
        sb.insert(sb.length(), "\"\"\\n\"");     //结尾添加字符  sb.length()获取的是已经在开头插入后的字符长度:"20191011
        Log.d("字符转换", "" + sb.toString() + " 字符长度:" + sb.length());
    }

    结果:
    2019-10-11 10:33:22.882 3864-3864/字符串:: 20191011  字符长度:8
    2019-10-11 10:33:22.882 3864-3864/字符转换: "20191011""\n"  字符长度:14

3、截取指定字符串

3.1、文件路径截取文件名去除后缀

 if (mFileNamePath != null) {
                    int start = mFileNamePath.lastIndexOf("/");                                          
                    int end = mFileNamePath.lastIndexOf(".");                                           
                                                      
                    if (start != -1 && end != -1) {                                               //截取文件名
                        String fileName = mFileNamePath.substring(start + 1, end);                         //完整文件名
                        Log.d(Tag, "截取的文件名: " + fileName);


    }

    结果:
    完整的文件路径:  /storage/emulated/0/Video/test.pem
    截取的文件名: test

    

3.2、判断字符串长度,若是偶数择取中间两位,若是奇数择取中间一位

    public void test() {
        String str = "abcdefgh";
        StringBuilder sb = new StringBuilder(str);
        Log.d("字符串:", "" + sb.toString() + " 字符长度:" + sb.length());
        String substring;
        if (sb.length()%2 == 0){      //可以被整除 是偶数取中间两位
            substring = sb.substring(sb.length() / 2-1, sb.length() / 2 + 1);
        }else {
            substring = sb.substring(sb.length() / 2, sb.length() / 2 + 1);
        }
        Log.d("字符转换", "" + substring + " 字符长度:" + substring.length());
    }

    结果:

        字符串:: abcdefgh 字符长度:8
        字符转换: de 字符长度:2

3.3、截取一组数据分段发送: 1/2、1/3

    /**
     * 从一个byte[]数组中截取一部分
     * @param bytes
     * @param begin  起始位
     * @param count		截取多长位
     * @return
     */
    public static byte[] subBytes(byte[] bytes, int begin, int count) {
        byte[] countByte = new byte[count];
        for (int i=begin;i<begin+count; i++) countByte[i-begin] = bytes[i];
        
        System.out.println("截取的数组是="+new String(countByte));
        
        return countByte;
    }
  • 截取字符的1/2,及其余下的字符串
		 String str = "ABCDEFGHijklM2n9630PSF";
		 
		 int length = str.length();
		 
		 byte[] arr1 = str.getBytes();					//源数据
		 
		 byte[] bs2 = new byte[length/2];			// 1/2

		 for (int i=0;i<0+length/2; i++) bs2[i-0] = arr1[i];
		  
		  String substring2 = new String(bs2);
		  
		  System.out.println("原字符:"+str+"  length="+length);
		  
		  System.out.println("1/2截取的数组是:"+substring2+"\n"+"length="+substring2.length());
		  
		  String substring3 = str.substring(length/2, length);
		  
		  System.out.println("截取剩下的1/2字符串:"+substring3+"\n"+"length="+substring3.length());
打印:

原字符:ABCDEFGHijklM2n9630PSF  length=22
1/2截取的数组是:ABCDEFGHijk
length=11
截取剩下的1/2字符串:lM2n9630PSF
length=11
  •  截取字符串的1/3:
 String str = "ABCDEFGHijklM2n9630PSF";
		 
		 int length = str.length();
		 
		 byte[] byte1 = str.getBytes();					//源数据 
		 
		 byte[] byte3 = new byte[length/3];			//  1/3
		 
		  for (int i=0;i<0+length/3; i++) byte3[i-0] = byte1[i];
		  
		  String substring3 = new String(byte3);
		  
		  System.out.println("原字符:"+str+"\n"+" 字符长度="+length);
		  
		  System.out.println("截取的1/3数组是="+substring3+"\n"+"  length长度="+substring3.length());

//		  String substring3 = str.substring(length/3, length);
//		  
//		  System.out.println("截取的剩下的2/3字符串:"+substring3+"\n"+"  长度 length="+substring3.length());
		  
		  String substring4 = str.substring(length/3, length-length/3);
		  
		  System.out.println("截取的剩下 2/3字符串内容的1/3:"+substring4+"\n"+"  长度length="+substring4.length());
		  
		  
		  	String substring5 = str.substring(length-length/3, length);
		  
		  System.out.println("截取最后的1/3:"+substring5+"\n"+"  length="+substring5.length());
		  
		  
		  String str2 = substring3+substring4+substring5;
		  
		  System.out.println("拼接后的字符:"+str2 + "\n"+"length="+str2.length());
结果打印:
原字符:ABCDEFGHijklM2n9630PSF
 字符长度=22
截取的1/3数组是=ABCDEFG
  length长度=7
截取的剩下 2/3字符串内容的1/3:HijklM2n
  长度length=8
截取最后的1/3:9630PSF
  length=7
拼接后的字符:ABCDEFGHijklM2n9630PSF
length=22

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值