关于字符串操作(Java描述),你需要知道这么几件事。

这篇博客详细介绍了Java中字符串和字符数组的相互转换,包括如何获取指定位置的字符、如何判断字符串是否全由数字组成。此外,还讲解了字节与字符串的转换,以及字符串的各种常见操作,如比较、查找、替换、拆分、截取和大小写转换。最后提到了String类没有内置首字母大写的方法,需要自行实现。

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

字符与字符串:

字符串内包含一个字符数组,String可以和char[]相互转换

1.将字符数组中的内容变为字符串

		char arr[] = {'a','b','c','d'};
        String str = new String(arr);
        System.out.println(str);

输出

abcd

2.将字符数组中的部分内容转换为字符串

		char arr[] = {'a','b','c','d'};
        String str = new String(arr,1,3);//起始位置~偏移位置 前闭后开
        System.out.println(str);

输出结果

bcd

3.取得指定位置索引的字符串,索引起始位置从0开始

System.out.println(str.charAt(3));

4.将字符串变为字符数组返回

String str = "hello"
char[] arr = str.toCharArray();
        for (char a : arr){
            System.out.println(a);
        }

例题:给定字符串一个字符串, 判断其是否全部由数字所组成.

思路是:把字符串转成字符数组,再判断每一位字符是不是0~9的内容

public class Test {
    public static void main(String[] args) {
        String str = "565992s";

        System.out.println(isNumber(str)? "全由数字组成" : "有非数字成员");
    }
    public static boolean isNumber(String str){
        char[] arr = str.toCharArray();
        for (int i = 0; i < arr.length; i++) {
            if(arr[i] < '0' || arr[i] > '9'){
                return false;
            }
        }
        return true;
    }
}

字节与字符串相互转换

字节常用于数据传输以及编码转换的处理之中,String也能方便的和byte[]相互转换。

String str = "helloworld" ; 
// String 转 byte[] 
byte[] data = str.getBytes() ; 
for (int i = 0; i < data.length; i++) { 
 System.out.print(data[i]+" "); 
}

//// byte[] 转 String
		byte[] date = {'a','c','d','e'};
        String str = new String(date);
        System.out.println(str);

小结:那么何时使用byte[],何时使用date[]

  • byte[]是把String按照一个字节一个字节的方式处理,适合再网络传输和数据存储这样的场景下使用,更适合针对二进制数据来操作
  • char[]是把String按照一个字符一个字符的方式来处理,更适合文本数据来操作,尤其是包含中文的时候。

3.字符串常见操作

3.1字符串比较
这里有三种方法
1.equals:区分大小写的比较
2.equalsIgnoreCase:不区分大小写的比较

		String str1 = "hehe";
        String str2 = "Hehe";
        System.out.println(str1.equals(str2));//false
        System.out.println(str1.equalsIgnoreCase(str2));//true

3.compareTo:比较大小,相等返回0,小于:返回内容小于0,大于:返回内容大于0(根据字典序的规则)

3.2:字符串查找

1.contains(返回一个布尔类型的值)

		String str1 = "hehe";
        String str2 = "ehe";
        System.out.println(str1.contains(str2));

2.indexOf(寻找是否包含子集,如果找到了返回找到的起始索引位置下标,没找到返回-1)

		String str1 = "hehe";
        String str2 = "ehe";
        System.out.println(str1.indexOf(str2));//返回1
        System.out.println(str1.indexOf(str2,1));//从指定位置开始找,1代表从下标为1开始往后找

3.lastIndexOf(从后向前查找字符串位置)

		String str1 = "hehehehe";
        String str2 = "he";
        System.out.println(str1.lastIndexOf("he"));

4.startsWith(判断是否为指定字符串开头)

		String str1 = "hehehehe";
        String str2 = "he";
        System.out.println(str1.startsWith(str2));
		System.out.println(str1.startsWith(str2,2));//从指定位置开始判断,
		//是否以str2字符串开头

5.endWith(判断是否以指定字符串结尾)

        System.out.println(str1.endsWith(str2));

字符串替换
1.replaceAll,替换所有的指定内容

		String str1 = "hehehehe";
        String str3 = str1.replaceAll("e","a and ");
        System.out.println(str3);

输出:

ha and ha and ha and ha and

2.replaceFirst(替换首个内容)

		String str1 = "hehehehe";
        String str3 = str1.replaceFirst("e","a and ");
        System.out.println(str3);

输出结果

ha and hehehe

6.4字符串拆分

1.split拆分字符串

		String str = "sing dance rap basketball";
        String[] result = str.split(" ");//按空格拆分成四个字符串,放入一个数组
        for(String s : result){
            System.out.println(s);
        }

结果

sing
dance
rap
basketball

		String str = "sing dance rap basketball";
        String[] result = str.split(" ",2);
        //这里的2,是limit极限,是这个result数组的长度,为2
        for(String s : result){
            System.out.println(s);
        }

limit为2时如下
sing
dance rap basketball
limit为3如下
sing
dance
rap basketball

拆分IP地址

		String str = "192.168.1.1";
        String[] result = str.split("\\.");
        for(String s : result){
            System.out.println(s);
        }
    }

注意

  1. 字符"|","*","+“都得加上转义字符,前面加上”".
  2. 而如果是"",那么就得写成"\".
  3. 如果一个字符串中有多个分隔符,可以用"|"作为连字符.

多次拆分

		String str = "sing dance&rap basketball";
        String[] result = str.split("&");
        for(int i = 0;i <result.length;i++){
            String[] tmp = result[i].split(" ");
            for(String s : tmp){
                System.out.println(s);
            }
        }

字符串截取:
substring:从指定位置开始截取

			String str = "sing dance&rap basketball";
            String str2 = str.substring(5);//5是d,前闭后开,把d后面的都截取了
            System.out.println(str2);
			String str3 = str.substring(5,10);//截取下标为5~10的字符串
            System.out.println(str3);

dance&rap basketball
dance

其他方法
trim()方法的使用:去掉左右空格保留中间空格

public class Test {
    public static void main(String[] args){
        String str = "  sing dance rap basketball \t";
        System.out.println("[" + str + "]");
        System.out.println("[" + str.trim() + "]");
    }
}

输出结果

[ sing dance rap basketball ]
[sing dance rap basketball]

大小写的转换

		String str = "sing dAnce rap Basketball";
        System.out.println(str.toUpperCase());
        System.out.println(str.toLowerCase());

输出结果

SING DANCE RAP BASKETBALL
sing dance rap basketball

取得字符串长度
.length()方法
注意:数组长度使用数组名称.length属性,而String中使用的是length()方法

String类并没有提供首字母大写操作,需要自己实现。

public class Test {
    public static void main(String[] args){
        System.out.println(firstUp(""));
        System.out.println(firstUp("a"));
        System.out.println(firstUp("sing dance rap"));
    }
    public static String firstUp(String s){
        if("".equals(s) || s == null){
            return s;
        }
        if(s.length() > 1){
            return s.substring(0,1).toUpperCase() + s.substring(1);
        }
        else{
            return s.toUpperCase();
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值