Java中操作字符串

一、String类的概述及常用方法

概述

String类提供了许多有用的方法,例如,获得字符串的长度、对两个字符串进行比较、连接两个字符串以及提取一个字符串中的某一部分等。可以使用String类提供的方法来完成对字符的操作。

String类的常用方法

1)求字符串长度length():调用length()方法的语法格式如下
字符串.length();
length() 返回字符串的长度
示例:注册新用户,要求密码长度不能小于6位

import java.util.Scanner;

public class Register {
    public static void main(String[] args) {
        Scanner input =  new Scanner(System.in);
        String uname,pwd;
        System.out.println("请输入用户姓名");
        uname = input.next();
        System.out.println("请输入密码");
        pwd =input.next();
        if (pwd.length()>=6){
            System.out.println("注册成功");
        }else{
            System.out.println("密码长度不能小于6位");
        }
    }
}

2)字符串比较
字符串比较的语法格式如下:
字符串1.equals(字符串2)
比较两个字符串的值是否相同,返回值为boolean类型,如果相同,则返回真值,否则返回假值。
示例:注册成功后,实现登录验证。根据上一个注册的代码来匹配

import java.util.Scanner;

public class Register {
    public static void main(String[] args) {
        Scanner input =  new Scanner(System.in);
        String uname,pwd;
        System.out.println("请输入用户姓名");
        uname = input.next();
        System.out.println("请输入密码");
        pwd =input.next();
        if (pwd.length()>=6){
            System.out.println("注册成功");
        }else{
            System.out.println("密码长度不能小于6位");
        }
        String uname1,pwd1;
        System.out.println("请输入登录用户名");
        uname1=input.next();
        System.out.println("请输入登录密码");
        pwd1=input.next();
        if (uname.equals(uname1) && pwd.equals(pwd1)){
            System.out.println("登录成功");
        }else{
            System.out.println("注册失败");
        }
    }
}

(3)忽略字符串的大小写equalsIgnoreCase()
具体用法:字符串1.equalsIgnoreCase(字符串2)
示例:登录时不考虑用户名大小写的问题,实现登录

import java.util.Scanner;

public class Register {
    public static void main(String[] args) {
        Scanner input =  new Scanner(System.in);
        String uname,pwd;
        System.out.println("请输入用户姓名");
        uname = input.next();
        System.out.println("请输入密码");
        pwd =input.next();
        if (pwd.length()>=6){
            System.out.println("注册成功");
        }else{
            System.out.println("密码长度不能小于6位");
        }
        String uname1,pwd1;
        System.out.println("请输入登录用户名");
        uname1=input.next();
        System.out.println("请输入登录密码");
        pwd1=input.next();
        if (uname.equalsIgnoreCase(uname1) && pwd.equalsIgnoreCase(pwd1)){
            System.out.println("登录成功");
        }else{
            System.out.println("注册失败");
        }
    }
}

另外String类提供了两个方法改变字符串中字符的大小写
toLowerCase():转换字符串中的英文字符为小写
toUpperCase():转换字符串中的英文字符为大写
关键代码

if (uname.toLowerCase().equals((uname1).toLowerCase()) && pwd.toLowerCase().equals((pwd1).toLowerCase())){
    System.out.println("登录成功");
}else{
    System.out.println("注册失败");
}

(4)字符串的连接
字符串的连接语法格式:

  • 字符串1.concat(字符串2);
    字符串2拼接到字符串1的后面,返回拼接后的新字符串
    示例
public class Connect {
    public static void main(String[] args) {
        String s = new String ("您好");
        String name = new String("张三");
        String sentence = s.concat(name);
        System.out.println(sentence);
    }
}

(5)字符串提取和查询
常用方法:

方法说明
public int indexOf(int ch)搜索并返回第一个出现字符ch的位置
public int indexOf(String value)搜索并返回第一个出现字符串value的位置
public int lastIndexOf(int ch)搜索并返回最后一个出现字符的位置
public int lastIndexOf(String value)搜索并返回最后一个出现字符串value的位置
public String substring(int index)提取从指定索引位置开始的部分字符串
public String substring(int beginindex,int endindex)提取beginindex和endindex之间的字符串
public String trim截取字符串前后的空格后返回新的字符串

示例:学生使用作业提交系统提交java作业时,输入java原文件名,并输入自己的电子邮箱,提交前系统检查:是否是合法的java文件名:电子邮箱是否为合法电子邮箱。编写代码,实现提交前验证功能。

public class JieQu {
    public static void main(String[] args) {
        boolean fileCorrect = false;//标志文件名是否正确
        boolean emailCorrect = false;//标志邮箱是否正确
        Scanner input = new Scanner(System.in);
        System.out.println("---欢迎进入作业提交系统---");
        System.out.println("请输入Java源文件名");
        String fileName = input.next();
        System.out.println("请输入邮箱");
        String email = input.next();
        //检查java文件名
        int index = fileName.lastIndexOf(".");
        if (index!=-1 && index!=0 && fileName.substring(index+1,fileName.length()).equals("java")){
            fileCorrect = true;//标志文件名是否正确
        }else {
            System.out.println("文件名无效");
        }
        //检查电子邮箱格式
        if (email.indexOf("@")!=-1 && email.indexOf(".")>email.indexOf("@")){
            emailCorrect = true;
        }else{
            System.out.println("邮箱无效");
        }
        //输出检测结果
        if (fileCorrect && emailCorrect){
            System.out.println("作业提交成功");
        }else {
            System.out.println("作业提交失败");
        }
        
    }
 }

(5)字符串拆分
字符串拆分的语法格式如下:

  • 字符串名.split(separator.limit)

separator是可选项,表示根据匹配指定的正则表达式来拆分字符串,如果匹配不上,则结果数组只有一个元素即字符串。
limit可选项,该值用来限制返回数组中的元素个数。
示例:将一段每句都以空格结尾的歌词拆分后按行输出

public class ChaiFen {
    public static void main(String[] args) {
        String words = "长亭外 古道边 芳草碧连天 晚风扶 柳笛残声 夕阳山外山";
        String[] printWord = new String[100];//定义接收数组
        System.out.println("****原歌词格式****\n"+words);
        printWord = words.split(" ");
        System.out.println("****拆分后歌词格式****\n");
        for (int i = 0; i < printWord.length; i++) {
            System.out.println(printWord[i]);
        }
    }
}

二、StringBuffer类和StringBuilder类

2.1使用StringBuffer类处理字符

StringBuffer类也是可以来存储字符串的,而且他是比String类更高效地存储字符串的一中引用数据类型。特别是对字符串进行连接操作时,使用StringBuffer类可以大大提高程序的执行效率。
1)声明StringBuffer对象并初始化的方法:
StringBuffer s = new StringBuffer(“青春无悔”)
2)常用的StringBuffer提供的方法

  1. toString()方法:转换为String类型的语法格式如下(字符串1.toString();)即将StringBuffer类型的字符串1转换为String类型的对象并返回
  2. append()方法:追加字符串的语法格式如下(字符串.append(参数);)即将参数连接到字符串后并返回(可以追加任何类型值追加到字符串后)
    示例:使用StringBuffer类实现字符串追加
public class Connect1 {
    //使用StringBuffer类实现字符追加
    public static void main(String[] args) {
        StringBuffer s =new StringBuffer("青春无悔");
        int num = 110;
         //在字符串后面追加字符串
        StringBuffer s1 =s.append("我心永恒");
        System.out.println(s1);
        //在字符串后面追加字符
        StringBuffer s2 = s1.append("啊");
        System.out.println(s2);
        //在字符串后面追加整型数字
        StringBuffer s3 =s2.append(num);
        System.out.println(s3);

    }
}

3.insert()方法:插入字符串
语法格式:字符串.insert(位置,参数)
将参数插入到字符串指定位置后并返回,参数值可以是包括String的任何类型
示例 :编写一个方法,实现将一个数字字符串转换成以逗号分隔的数字串,即从右边开始每3个数字用逗号分隔。

public class FenGe {
    //示例 :编写一个方法,实现将一个数字字符串转换成以逗号分隔的数字串,即从右边开始每3个数字用逗号分隔。
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        //接收数字串,存放于StringBuffer类型的对象中
        System.out.println("请输入一串数字");
        String nums = input.next();
        StringBuffer str = new StringBuffer(nums);
        //从前往后每隔3位添加一个逗号
        for (int i = str.length()-3; i>0  ; i=i-3) {
            str.insert(i,",");

        }
        System.out.println(str);
    }
}
2.2使用StringBuilder类处理字符串

它与StringBuffer的方法基本一样,只是它的执行相比较来说是比较块的,这里就不再举例。

2.3String、StringBuffer、StringBuilder对比
  1. String:字符串常量,在每次对String类型进行改变时其实都等同于生成了一个新的String对象,所以经常改变内容的字符串最好不要用String类型,因为每次生成对象都会对系统性能产生影响,
  2. StringBuffer:字符串变量,在每次对StringBuffer对象进行改变时,会对StringBuffer对象本身进行操作,而不是生成新的对象,再改变对象引用。所以,在字符串对象经常改变的情况下推荐使用。
  3. StringBuilder:字符串变量,JDK5.0版本以后提供,它和StringBuffer类等价,区别在于StringBuffer类是线程安全的,StringBuilder是单线程的,不提供同步,理论上效率更高。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值