设为首页收藏本站
网站公告 | 这是第一条公告
     

 找回密码
 立即注册
缓存时间17 现在时间17 缓存数据 你我最后竟然也平凡到自命不凡。

你我最后竟然也平凡到自命不凡。 -- 像我这样的人

查看: 679|回复: 2

一篇文章看懂Java字符串操作

[复制链接]

  离线 

TA的专栏

  • 打卡等级:即来则安
  • 打卡总天数:15
  • 打卡月天数:0
  • 打卡总奖励:218
  • 最近打卡:2025-03-17 18:32:18
等级头衔

等級:晓枫资讯-列兵

在线时间
0 小时

积分成就
威望
0
贡献
44
主题
34
精华
0
金钱
347
积分
92
注册时间
2023-8-13
最后登录
2025-5-25

发表于 2025-3-13 19:52:43 | 显示全部楼层 |阅读模式

✨字符, 字节与字符串

🎈字符与字符串

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

NO 方法名称 类型 描述
1 public String(char value[]) 构造 将字符数组中的所有内容变字符串
2 public String(char value[],int offset,int count) 构造 将部分字符数组的内容变为字符串
3 public char charAt(int index) 普通 取得指定索引位置的字符串,索引从0开始
4 public char[] toChararray() 普通 将字符串变为字符数组返回

代码示例: 获取指定位置的字符

 public static void main(String[] args) {
        String str = "hello" ;
        System.out.println(str.charAt(0));// 下标从 0 开始
        System.out.println(str.charAt(1));
        System.out.println(str.charAt(2));
        System.out.println(str.charAt(3));
 
    }

1.png

代码示例: 字符串与字符数组的转换

 public static void main(String[] args) {
        String str = "helloworld" ;
        // 将字符串变为字符数组
        char[] data = str.toCharArray() ;
        for (int i = 0; i < data.length; i++) {
            System.out.print(data+" ");
        }
 
    }

2.png

public static void main(String[] args) {
        String str = "helloworld" ;
        // 将字符串变为字符数组
        char[] data = str.toCharArray() ;
        // 字符数组转为字符串
        System.out.println(new String(data)); // 全部转换
        System.out.println(new String(data,5,5)); // 部分转换
    }

3.png

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

public static boolean isNumberChar(String s) {
        for (int i = 0; i < s.length(); i++) {
            char c = s.charAt(i);
            //判断某个字符是不是数字
            if(c < '0' || c > '9') {
                return false;
            }
 
        }
        return true;
    }
 public static void main(String[] args) {
        String str = "124567";
        System.out.println(isNumberChar(str));
    }

4.png

public static void main(String[] args) {
        String str = "1d4567";
        System.out.println(isNumberChar(str));
    }

5.png

🎈字节与字符串

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

NO 方法名称 类型 描述
1 public String(byte bytes[]) 构造 将字节数组变为字符串
2 public String(byte bytes[],int offset,int length) 构造 将部分字节数组中的内容变为字符串
3 public bye[] getBytes() 普通 将字符串以字节数组的形式返回
4

public byte[] getBytes(String charsetNAme)throws

UnsupportedEncodingException

普通 编码转化处理

代码示例: 实现字符串与字节数组的转换处理

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

6.png

 public static void main(String[] args)  {
        byte[] bytes = {97,98,99,100};
        String str = new String(bytes,1,3);
        System.out.println(str);
 
    }

7.png

🎈小结

byte[] 是把 String 按照一个字节一个字节的方式处理, 这种适合在网络传输, 数据存储这样的场景下使用. 更适合 针对二进制数据来操作.

char[] 是吧 String 按照一个字符一个字符的方式处理, 更适合针对文本数据来操作, 尤其是包含中文的时候.

✨字符串常见操作

🎈字符串比较

No 方法名称 类型 描述
1 public boolean equals(Object anObject) 普通 区分大小的比较
2 public boolean equalsIanorecase(String anotherString) 普通 不区分大小写的比较
3 public int compareTo(String anotherString) 普通 比较两个字符串大小关系

代码示例: 不区分大小写比较

 public static void main(String[] args) {
        String str1 = "hello" ;
        String str2 = "Hello" ;
        System.out.println(str1.equals(str2)); // false
        System.out.println(str1.equalsIgnoreCase(str2)); // true 
    }

8.png

在String类中compareTo()方法是一个非常重要的方法,该方法返回一个整型,该数据会根据大小关系返回三类内容: 

1. 相等:返回0.

2. 小于:返回内容小于0.

3. 大于:返回内容大于0。


 public static void main(String[] args) {
        System.out.println("A".compareTo("a")); // -32
        System.out.println("a".compareTo("A")); // 32
        System.out.println("A".compareTo("A")); // 0
        System.out.println("AB".compareTo("AC")); // -1
        System.out.println("刘".compareTo("杨"));
    }

9.png

compareTo()是一个可以区分大小关系的方法,是String方法里是一个非常重要的方法。

字符串的比较大小规则, 总结成三个字 "字典序" 相当于判定两个字符串在一本词典的前面还是后面. 先比较第一 个字符的大小(根据 unicode 的值来判定), 如果不分胜负, 就依次比较后面的内容

🎈字符串查找

从一个完整的字符串之中可以判断指定内容是否存在,对于查找方法有如下定义:

NO 方法名称 类型 描述
1 public boolean contains(CharSequence s) 普通 判断一个子字符串是否存在
2 public int indexOf(String str) 普通 从头开始查找指定字符串的位置,查到了返回位置的开始索引,如果查不到返回-1
3 public int indexOf(String str,int fromIndex) 普通 从指定位置查找子字符串位置
4 public int LastIndexOf(String str) 普通 从后向前查找子字符串位置
5 public int LastIndexOf(String str, int fromIdex) 普通 从指定位置由后向前查找
6 public boolean startWith (String prefix) 普通 判断是否以指定字符串开头
7 public boolean startWith(String prefix, int toffset) 普通 从指定位置开始判断是否以指定字符串开头
8 public boolean endWith(String suffix) 普通 判断是否以指定字符串结尾

代码示例: 字符串查找,最好用最方便的就是contains()

public static void main(String[] args) {
        String str = "helloworld" ;
        System.out.println(str.contains("world")); 
        System.out.println(str.contains("forld"));
    }

10.png

 代码示例: 使用indexOf()方法进行位置查找

public static void main(String[] args) {
        String str = "helloworld" ;
        System.out.println(str.indexOf("world")); // 5,w开始的索引
        System.out.println(str.indexOf("bit")); // -1,没有查到
        if (str.indexOf("hello") != -1) {
            System.out.println("可以查到指定字符串!");
        }
    }

11.png

 代码示例: 使用indexOf()的注意点

 public static void main(String[] args) {
        String str = "helloworld" ;
        System.out.println(str.indexOf("l")); // 2
        System.out.println(str.indexOf("l",5)); // 8
        System.out.println(str.lastIndexOf("l")); // 8
    }

12.png

 代码示例: 判断开头或结尾

public static void main(String[] args) {
        String str = "**@@helloworld!!" ;
        System.out.println(str.startsWith("**")); // true
        System.out.println(str.startsWith("@@",2)); // ture
        System.out.println(str.endsWith("!!")); // true
    }

13.png

 🎈字符串替换

使用一个指定的新的字符串替换掉已有的字符串数据,可用的方法如下

No 方法名称 类型 描述
1 public String replaceAll(String regex,String replacement) 普通 替换所有指定的内容
2 public String replaceFirst(String regex, String replacement) 普通 替换首个内容

代码示例: 字符串的替换处理

 public static void main(String[] args) {
        String str = "helloworld" ;
        System.out.println(str.replaceAll("l", "_"));
        System.out.println(str.replaceFirst("l", "_"));
    }

14.png

 注意事项: 由于字符串是不可变对象 , 替换不修改当前字符串, 而是产生一个新的字符串

 🎈字符串拆分

可以将一个完整的字符串按照指定的分隔符划分为若干个子字符串。

NO 方法名称 类型 描述
1 public String[] split(String regex) 普通 将字符串全部拆分
2 public String[] split(String regex,int limit) 普通 将字符串部分拆分

代码示例: 实现字符串的拆分处理

  public static void main(String[] args) {
        String str = "hello world hello yu" ;
        String[] result = str.split(" ") ; // 按照空格拆分
        for(String s: result) {
            System.out.println(s);
        }
    }

15.png

代码示例: 字符串的部分拆分

public static void main(String[] args) {
        String str = "hello world hello yu" ;
        String[] result = str.split(" ",2) ;
        for(String s: result) {
            System.out.println(s);
        }
    }

16.png

代码示例: 拆分IP地址

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

17.png

 注意事项:

1. 字符"|","*","+"都得加上转义字符,前面加上"\".

2. 而如果是"",那么就得写成"\\".

3. 如果一个字符串中有多个分隔符,可以用"|"作为连字符

代码示例: 多次拆分

public static void main(String[] args) {
        String str = "name=zhangsan&age=18" ;
        String[] result = str.split("&") ;
        for (int i = 0; i < result.length; i++) {
            String[] temp = result.split("=") ;
            System.out.println(temp[0]+" = "+temp[1]);
        }
    }

18.png

 🎈字符串截取

从一个完整的字符串之中截取出部分内容。可用方法如下:

NO 方法名称 类型 描述
1 public String substring(int beginIndex) 普通 从指定索引截取到结尾
2 public String substring(int beginIndex, int endIndex) 普通 截取部分内容

代码示例: 观察字符串截取

public static void main(String[] args) {
        String str = "helloworld" ;
        System.out.println(str.substring(5));
        System.out.println(str.substring(0, 5));
    }

19.png

 注意事项:

1. 索引从0开始

2. 注意前闭后开区间的写法, substring(0, 5) 表示包含 0 号下标的字符, 不包含 5 号下标

🎈其他操作方法

NO 方法名称 类型 描述
1 public String trim() 普通 去掉字符串的左右空格,保留中间空格
2 public String toUpperCase() 普通 字符串转大写
3 public String toLowerCase() 普通 字符串转小写
4 public native String intern() 普通 字符串入池操作
5 public String concat(String str) 普通 字符串连接,等同于+,不入池
6 public int length() 普通 取得字符串长度
7 public boolean isEmpty 普通 判断是否为空字符串,但不是null,而是长度0

代码示例: 观察trim()方法的使用

public static void main(String[] args) {
        String str = " hello world " ;
        System.out.println("["+str+"]");
        System.out.println("["+str.trim()+"]");
    }

20.png

 代码示例: 大小写转换

public static void main(String[] args) {
        String str = " hello%$$%@#$%world 哈哈哈 " ;
        System.out.println(str.toUpperCase());
        System.out.println(str.toLowerCase());
    }

21.png

 代码示例: 字符串length()

 public static void main(String[] args) {
        String str = " hello%$$%@#$%world 哈哈哈 " ;
        System.out.println(str.length());
    }

22.png

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

代码示例: 观察isEmpty()方法

public static void main(String[] args) {
        System.out.println("hello".isEmpty());
        System.out.println("".isEmpty());
        System.out.println(new String().isEmpty());
    }

23.png

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

代码示例: 首字母大写

 public static void main(String[] args) {
            System.out.println(fistUpper("yuisama"));
            System.out.println(fistUpper(""));
            System.out.println(fistUpper("a"));
        }
        public static String fistUpper(String str) {
            if ("".equals(str)||str==null) {
                return str ;
            }
            if (str.length()>1) {
                return str.substring(0, 1).toUpperCase()+str.substring(1) ;
            }
            return str.toUpperCase() ;
 
    }

24.png

总结

到此这篇关于Java字符串操作的文章就介绍到这了,更多相关Java字符串操作内容请搜索晓枫资讯以前的文章或继续浏览下面的相关文章希望大家以后多多支持晓枫资讯!


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
晓枫资讯-科技资讯社区-免责声明
免责声明:以上内容为本网站转自其它媒体,相关信息仅为传递更多信息之目的,不代表本网观点,亦不代表本网站赞同其观点或证实其内容的真实性。
      1、注册用户在本社区发表、转载的任何作品仅代表其个人观点,不代表本社区认同其观点。
      2、管理员及版主有权在不事先通知或不经作者准许的情况下删除其在本社区所发表的文章。
      3、本社区的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,举报反馈:点击这里给我发消息进行删除处理。
      4、本社区一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
      5、以上声明内容的最终解释权归《晓枫资讯-科技资讯社区》所有。
http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~

  离线 

TA的专栏

等级头衔

等級:晓枫资讯-列兵

在线时间
0 小时

积分成就
威望
0
贡献
0
主题
0
精华
0
金钱
15
积分
10
注册时间
2022-12-28
最后登录
2022-12-28

发表于 2025-3-13 22:15:59 | 显示全部楼层
顶顶更健康!!!
http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~

  离线 

TA的专栏

等级头衔

等級:晓枫资讯-列兵

在线时间
0 小时

积分成就
威望
0
贡献
0
主题
0
精华
0
金钱
11
积分
2
注册时间
2023-5-5
最后登录
2023-5-5

发表于 2025-4-16 02:43:31 | 显示全部楼层
路过,支持一下
http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~
严禁发布广告,淫秽、色情、赌博、暴力、凶杀、恐怖、间谍及其他违反国家法律法规的内容。!晓枫资讯-社区
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

1楼
2楼
3楼

手机版|晓枫资讯--科技资讯社区 本站已运行

CopyRight © 2022-2025 晓枫资讯--科技资讯社区 ( BBS.yzwlo.com ) . All Rights Reserved .

晓枫资讯--科技资讯社区

本站内容由用户自主分享和转载自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

如有侵权、违反国家法律政策行为,请联系我们,我们会第一时间及时清除和处理! 举报反馈邮箱:点击这里给我发消息

Powered by Discuz! X3.5

快速回复 返回顶部 返回列表