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