我的编程空间,编程开发者的网络收藏夹
学习永远不晚

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

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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

✨字符, 字节与字符串

?字符与字符串

字符串内部包含一个字符数组,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));
 
    }

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


 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[i]+" ");
        }
 
    }


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)); // 部分转换
    }

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


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));
    }


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

?字节与字符串

字节常用于数据传输以及编码转换的处理之中,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[i]+" ");
        }
        System.out.println();
        // byte[] 转 String
        System.out.println(new String(data));
    }


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

?小结

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 
    }

在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("杨"));
    }

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"));
    }

 代码示例: 使用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("可以查到指定字符串!");
        }
    }

 代码示例: 使用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
    }

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


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
    }

 ?字符串替换

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

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", "_"));
    }

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

 ?字符串拆分

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

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);
        }
    }

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


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);
        }
    }

代码示例: 拆分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);
        }
    }

 注意事项:

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[i].split("=") ;
            System.out.println(temp[0]+" = "+temp[1]);
        }
    }

 ?字符串截取

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

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));
    }

 注意事项:

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()+"]");
    }

 代码示例: 大小写转换


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

 代码示例: 字符串length()


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

 注意:数组长度使用数组名称.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());
    }

 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() ;
 
    }

总结

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

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

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

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

一篇文章弄懂Python关键字、标识符和变量

目录前言 一、Python 关键字 二、Python标识符 2.1 在 Python 中创建标识符的指南 2.2 测试标识符是否有效 2.3 标识符命名的最佳实践 三、Python 变量总结前言 本快速教程的目的是教您有关Python 关键
2022-06-02

一篇文章助你理解Python3中字符串编

前几天给大家介绍了unicode编码和utf-8编码的理论知识,以及Python2中字符串编码问题,没来得及上车的小伙伴们可以戳这篇文章:浅谈unicode编码和utf-8编码的关系和一篇文章助你理解Python2中字符串编码问题。下面在P
2023-01-31

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录