当前位置: 首页 > java >正文

【Java 常用类】java.lang包(6)String类的常用方法

文章目录

  • 前言
  • 一、String
  • 二、使用
      • 1.构造器
          • 1.1 创建
          • 1.2 编码转换
      • 2.常用方法
          • 2.1 获取
            • 获取长度
            • 获取字符
            • 获取(字符或字符串)索引(从头开始)
            • 获取(字符或字符串)索引(从末尾开始)
          • 2.2 判断
            • 判断相等
            • 判断相等(忽视大小写)
            • 判断相等(字典顺序)
            • 判断包含
            • 判断包含(忽视大小写)
            • 判断前缀
            • 判断后缀
            • 判断正则匹配
          • 2.3 其他常用
            • 拼接
            • 替换(单个)
            • 正则替换(第一个)
            • 正则替换(多个)
            • 拆分(全部)
            • 拆分(指定个数)
            • 获得子字符串
            • 获得字符数组
            • 获得大小写
            • 去除首尾空白
          • 2.4 静态方法
            • 类型转换
            • 格式化字符串
            • 字符数组转换
  • 相关



前言

String字符串类非常重要,同时他也要有很多方法。推荐把String字符串中常用的方法都用的很熟练。这样可以帮你节省很多处理字符串的时间。

对于字符串处理我非常推荐去学习一下正则表达式,他非常的强大,在处理字符串非常有用。

正则表达式学习请点击:【正则表达式】总结

一、String

String 类代表字符串。Java 程序中的所有字符串字面值(如 “abc” )都作为此类的实例实现。 在这里插入图片描述

public class BigDecimal extends Number implements Comparable<BigDecimal>

二、使用

1.构造器

1.1 创建

使用字面量和使用构造器创建字符串是一样的。

        String s = "str";String s2 = new String("str");
1.2 编码转换

将某个字符串的编码进行转换。(记得要抛出一个异常)

        String s = "str";// 将字符串s变成字节数组byte[] bytes = s.getBytes();// 将字节数组bytes的编码格式变成utf-8String s2 = new String(bytes, "UTF-8");System.out.println(s2);  // str

2.常用方法

2.1 获取
获取长度

length()
返回此字符串的长度。

获取当前调用该方法的字符串长度。

        String s = "hello";int len = s.length();System.out.println(len); // 5

获取字符

charAt(int index)
返回指定索引处的 char 值。

获取字符串s中下标为0的字符。

		char c = s.charAt(0);System.out.println(c); // h

获取(字符或字符串)索引(从头开始)

indexOf(int ch)
返回指定字符在此字符串中第一次出现处的索引。

获取字符和字符串出现出的索引(即下标)。如果没有找到会返回-1。

        String s = "hello";// 从字符串s中获取第一次出现'o'字符的位置int i1 = s.indexOf('o');// 从字符串s中获取第一次出现'llo'字符串的位置int i2 = s.indexOf("llo");System.out.println(i1); // 4System.out.println(i2); // 2// 从字符串下标1的位置开始,获取第一次出现'0'字符串的位置int i3 = s.indexOf('o', 1);// 从字符串下标1的位置开始,获取第一次出现'll0'字符串的位置int i4 = s.indexOf("llo", 1);System.out.println(i3); // 4System.out.println(i4); // 2

获取(字符或字符串)索引(从末尾开始)

lastIndexOf(int ch)
返回指定字符在此字符串中最后一次出现处的索引。

获取最后一次出现相同字符或字符串的索引。和上面的方法相似。

需要注意的是:指定的索引是从最后面开始的!

        String s = "hello";// 从字符串s中获取最后一次出现'o'字符的位置int i1 = s.lastIndexOf('o');// 从字符串s中获取最后一次出现'llo'字符串的位置int i2 = s.lastIndexOf("llo");System.out.println(i1); // 4System.out.println(i2); // 2// 从字符串末尾位置开始,从后往前,获取最后一次出现'0'字符串的位置int i3 = s.lastIndexOf('o', s.length());// 从字符串末尾位置开始,从后往前,获取最后一次出现'll0'字符串的位置int i4 = s.lastIndexOf("llo", s.length());System.out.println(i3); // 4System.out.println(i4); // 2
2.2 判断
判断相等

equals(Object anObject) 、contentEquals(CharSequence cs)
将此字符串与指定的对象比较。

这两个都是比较两个字符串是否相等,如果相等则返回true

        String s = "hello";boolean b1 = s.equals("hello");boolean b2 = s.contentEquals("hello");System.out.println(b1); // trueSystem.out.println(b2); // true

判断相等(忽视大小写)

equalsIgnoreCase(String anotherString)
将此 String 与另一个 String 比较,不考虑大小写。

忽视大小写比较是否相等。

        String s = "hello";boolean b1 = s.equalsIgnoreCase("HELLO");System.out.println(b1); // true

判断相等(字典顺序)

compareTo(String anotherString)
按字典顺序比较两个字符串。
compareToIgnoreCase(String str)
按字典顺序比较两个字符串,不考虑大小写。

比较此对象与指定对象的顺序。如果该对象小于、等于或大于指定对象,则分别返回负整数、零或正整数。

“a” 和 “a” 相等,所以返回0。“a” 小于 “b” 所以返回-1。

		// 考虑大小写int i = "a".compareTo("a");System.out.println(i); // 0int i2 = "a".compareTo("b");System.out.println(i2); // -1// 同上一样,只不过不考虑大小写而已int i = "A".compareToIgnoreCase("a");System.out.println(i); // 0int i2 = "A".compareToIgnoreCase("b");System.out.println(i2); // -1

判断包含

contains(CharSequence s)
当且仅当此字符串包含指定的 char 值序列时,返回 true。

查找一个字符串中是否有某个字符或字符串(字符或者字符串都可以,因为参数为:CharSequence类型的)。

如下查找字符串 “hello” 中是否有字符 ‘h’。

		String s = "hello";boolean h = s.contains("h");System.out.println(h); // true

判断包含(忽视大小写)

regionMatches(boolean ignoreCase, int toffset, String other, int ooffset, int len)
测试两个字符串区域是否相等。

我们会发现,上面的contains()方法判断是否包含,无法判断有大小写不区分的情况。所以可以使用下面这个方法来进行判断是否包含。

ignoreCase:是否忽略大小写(忽略true)
toffset:字符串s的起始偏移量(判断开始位置)
other:字符串参数(需要判断是否包含的子字符串)
ooffset:子字符串的起始偏移量(判断开始位置)
len:需要判断的长度(子字符串需要判断是否匹配的长度)

        String s = "hello";String subStr = "he";boolean b = s.regionMatches(true, 0, subStr, 0, subStr.length());System.out.println(b); // true

判断前缀

startsWith(String prefix) 、startsWith(String prefix, int toffset)
测试此字符串是否以指定的前缀开始。

有两个方法,都是判断字符串是否以某个前缀(字符串)开始。、

只不过第二个方法可以指定开始判断前缀的位置。

        String s = "hello";boolean b = s.startsWith("he"); // 判断是否是指定前缀he开始System.out.println(b); // trueboolean b2 = s.startsWith("he", 0); // 判断从下标0位置处开始,是否为指定前缀he开始System.out.println(b2); // true

判断后缀

endsWith(String suffix)
测试此字符串是否以指定的后缀结束。

判断字符串是否以指定的后缀结束的。

        String s = "hello";boolean b = s.endsWith("llo");System.out.println(b); // true

判断正则匹配

matches(String regex)
告知此字符串是否匹配给定的正则表达式。

判断此字符串是否满足给定的正则表达式匹配。

        String s = "hello";boolean m = s.matches("\\w+");System.out.println(m); // true
2.3 其他常用
拼接

concat(String str)
将指定字符串连接到此字符串的结尾。

相当于使用了 ‘+’ 符号。

        String s = "hello";// 相当于 String s = "hello" + "world.";String concat = s.concat("world.");

替换(单个)

replace(char oldChar, char newChar) 、replace(CharSequence target, CharSequence replacement)
返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的。

这两个方法可以替换单个字符。也可以替换单个字符串。

        String s = "hello";String re = s.replace("h", "H");System.out.println(re); // HelloString re2 = s.replace("hello", "HELLO");System.out.println(re2); // HELLO

正则替换(第一个)

replaceFirst(String regex, String replacement)
使用给定的 replacement 替换此字符串匹配给定的正则表达式的第一个子字符串。

会将第一个满足该正则表达式的字符串进行替换。

“hello” 为正则表达式字符串,“HELLO” 为将要替换的字符串。

        String s = "hello, hello!";String rf = s.replaceFirst("hello", "HELLO");System.out.println(rf); // HELLO, hello!

正则替换(多个)

replaceAll(String regex, String replacement)
使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串。

会将所有满足正则表达式的字符串进行替换。

"h"为正则表达式字符串, "H"为将要替换的字符串。

        String s = "hello, hello!";String ra = s.replaceAll("h", "H");System.out.println(ra); // Hello, Hello!

拆分(全部)

split(String regex)
根据给定正则表达式的匹配拆分此字符串。

该方法会根据给定的正则表达式进行字符串拆分。

        String s = "aa-bb-cc-dd-ee";String[] split = s.split("-");for (int i = 0; i < split.length; i++) {System.out.print(split[i] + ",");}// 最终输出 aa,bb,cc,dd,ee,

拆分(指定个数)

split(String regex, int limit)
根据匹配给定的正则表达式来拆分此字符串。

该方法会根据给定的正则表达式进行字符串拆分,同时还可以设置他指定拆分的个数。

如下,"-" 为正则表达式,2为按照正则表达式拆分成两个

        String s = "aa-bb-cc-dd-ee";String[] split = s.split("-", 2);for (int i = 0; i < split.length; i++) {System.out.print(split[i] + ",");}// 最终输出 aa,bb-cc-dd-ee,

获得子字符串

subSequence(int beginIndex, int endIndex) 、substring(int beginIndex) 、substring(int beginIndex, int endIndex)
返回一个新的字符串,它是此字符串的一个子字符串。

subSequence() 方法返回的是一个子序列。其他两个返回的都是一个子字符串。

        String s = "hello";String sub01 = s.substring(1); // 子字符串从下标1开始获取到最后System.out.println(sub01);String sub02 = s.substring(1, 2); // 子字符串从下标1开始(包含)开始获取,到下标2结束(不包含)System.out.println(sub02); // eCharSequence sub03 = s.subSequence(1, 2); // 同上,不过类型不一样System.out.println(sub03); // e

获得字符数组

toCharArray()
将此字符串转换为一个新的字符数组。

将一个字符串转成成一个新的字符串组。

        String s = "hello";char[] chars = s.toCharArray();for (int i = 0; i < chars.length; i++) {System.out.print(chars[i] + ",");}// 最后输出h,e,l,l,o,

获得大小写

toLowerCase() 、toUpperCase()
使用默认语言环境的规则将此 String 中的所有字符都转换为小写。

可以将一个字符串全部转换成小写或者大写。

        String s = "hello";String lc = s.toLowerCase(); // 转换成小写System.out.println(lc); // helloString uc = s.toUpperCase(); // 转换成大写System.out.println(uc); // HELLO

去除首尾空白

trim()
返回字符串的副本,忽略前导空白和尾部空白。

可以去除一个字符串的前面和最后面的空白

        String s = "         hello       ";String trim = s.trim();System.out.println(trim);
2.4 静态方法
类型转换

valueOf(int d)
返回 int 参数的字符串表示形式。

该方法有有多个重载方法。可以将不同基本数据类型转换成字符串形式。

转换成字符串形式后可以调用字符串的方法来操作。

        int num = 123;String numStr = String.valueOf(num); // 将int类型的数字转换成字符串char c = numStr.charAt(0); // 获取第一个数字System.out.println(c); // 1

格式化字符串

format(String format, Object… args)
使用指定的格式字符串和参数返回一个格式化字符串。

格式化某个字符串。

第1个字符串参数是一个字符串,用来格式化后面的字符串。第1个 %s 代表的是第2个字符串参数,第2个 %s 代表的是第3个字符串参数。

        String s = String.format("格式化: %s, %s", "aa", "bb");System.out.println(s); // 格式化: aa, bb

字符数组转换

copyValueOf(char[] data) 、copyValueOf(char[] data, int offset, int count)
返回指定数组中表示该字符序列的 String。

字符数组转换成字符串。可以设置起始偏移量(开始位置)和个数。

        char[] chars = {'a', 'b', 'c', 'd', 'e'};String s = String.copyValueOf(chars);System.out.println(s); // abcdeString s2 = String.copyValueOf(chars, 0, 3);System.out.println(s2); // abc

相关

更多常用类请查看:【Java SE 常用类】目录

http://www.xdnf.cn/news/11064.html

相关文章:

  • LimeSurvey
  • Mastercam2024安装教程(非常详细)从零基础入门到精通,看完这一篇就够了
  • 【转】线性反馈移位寄存器(LFSR)
  • 最全最新!四大运营商频段使用情况!
  • MySQL之mysqldump的使用详解和记一次备库的恢复
  • viewpager与viewflipper详解以及横幅轮播页Banner
  • Azureus源码剖析(一)
  • H264/H265码流类型
  • 总结:如何使用ClearCase进行开发工作
  • 小白的服务器解析漏洞
  • WinPhone学习笔记(三)——WinPhone的动画
  • 活动的启动模式和intent.setFlags方法中的参数值含义
  • 细细探究MySQL Group Replicaiton — 配置维护故障处理全集
  • Android的.dex、.odex与.oat文件区别
  • 找不到d3dx9_42.dll丢失有什么解决方法
  • Eclipse、jdk、Tomcat的下载安装与配置
  • 城堡幻想曲圣魔大战3(Castle Fantisia)艾伦希亚战记和重做版下载安装汉化
  • 最新pr值大于6的网站大全
  • 魔法卡片计算器
  • 读《延参法师语录——生活》有感
  • C#写了一个游戏外挂[转发]
  • 【域控制器EMC】域控制器EMC设计总结
  • java整合QQ联合登录(1)
  • 楼市三字经·新政杂戏
  • 【golang-GUI开发】Qt5的安装
  • DNS域名解析,以及A、AAAA、CNAME、MX、NS、TXT、SRV、SOA、PTR说明
  • VMware Workstation安装以及配置模板机
  • 某连锁酒店泄露数据的分析
  • 大学生个人网页设计 HTML个人网页制作 web个人网站模板 简单静态HTML个人网页作品
  • 能免费能发新闻软文外链的网站部分汇总