一篇文章看懂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字符串操作内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 整理Java编程中字符串的常用操作方法

    字符 一般情况下,当我们处理字符时,我们用原始数据类型 char. 示例 char ch = 'a'; // Unicode for uppercase Greek omega character char uniChar = '\u039A'; // an array of chars char[] charArray ={ 'a', 'b', 'c', 'd', 'e' }; 然而在开发中,我们会遇到需要使用对象而不是原始数据类型的情况.为了达到这个需求.Java 为原始数据类型 char

  • java字符串常用操作方法(查找、截取、分割)

    如下所示: public class 字符串常用操作 { public static void main(String[] args) { /* * 查找子串 */ String str1="dwqae12232aebdalf"; //查找指定字符第一次出现的位置 int first1=str1.indexOf(97);//参数为字符的ascii码 //查找指定字符串第一次出现的位置 int first2=str1.indexOf("12"); //查找指定字符第一

  • Java实现的简单字符串反转操作示例

    本文实例讲述了Java实现的简单字符串反转操作.分享给大家供大家参考,具体如下: 最常用的方式是,反向取出每个字符,然后打印: public class StringReverse { public static void main(String[] args) { // 原始字符串 String s = "A quick brown fox jumps over the lazy dog."; System.out.println("原始的字符串:" + s);

  • java的io操作(将字符串写入到txt文件中)

    复制代码 代码如下: import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.FileWriter;import java.io.IOException;import java.io.PrintStream;import java.io.PrintWriter;import java.io.RandomAccessFile; public cla

  • Java实现对字符串中的数值进行排序操作示例

    本文实例讲述了Java实现对字符串中的数值进行排序操作.分享给大家供大家参考,具体如下: 问题: 对"34 9 -7 12 67 25"这个字符串中的数值从小到大排序! 解决方法: 先介绍几个eclipse快捷键:输入for再按下"alt+/"可快速写一个for循环 选中某一个小写单词 Ctrl+Shift+x  可变大写,选中某一个大写单词 Ctrl+Shift+y  可变小写 下面请看具体实现代码: import java.util.Arrays; public

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

    目录 字符, 字节与字符串 字符与字符串 字节与字符串 字符串常见操作 字符串比较 字符串查找  字符串替换  字符串拆分  字符串截取 其他操作方法 总结 字符, 字节与字符串 字符与字符串 字符串内部包含一个字符数组,String 可以和 char[] 相互转换. NO 方法名称 类型 描述 1 public String(char value[]) 构造 将字符数组中的所有内容变字符串 2 public String(char value[],int offset,int count) 构

  • 一篇文章看懂Java异常处理

    目录 异常的定义 异常的分类 异常的处理方法 try-catch处理 throw 和throws 自定义异常 总结 异常的定义 在java中,异常就是java在编译.运行或运行过程中出现的错误 总共有三种:1.编译错误 2.运行错误 3.逻辑错误 1.编译错误是因为程序没有遵循语法规则,编译程序能够自己发现并且提示我们错误的原因和位置,这个也是新手在刚接触编程语言时经常遇到的问题. 2.运行时错误是因为程序在执行时,运行环境发现了不能执行的操作. 3.逻辑错误是因为程序没有按照预期的逻辑顺序执行

  • Python 一篇文章看懂时间日期对象

    目录 一.时间对象time 1.测量运行时间方法 ①process_time() ②perf_counter() ③monotonic() 2.函数性能计算器 二.日期对象datetime 1.格式化日期字符串时常用的占位符 2.日期对象 3.日期转字符串 4.字符串转日期 总结 一.时间对象time time模块使用的是C语言函数库中的函数.只能处理1970/1/1到2038/12/31之间的数据. 1.测量运行时间方法 ①process_time() 主要作用就是返回当前进程处理器运行时间

  • 一篇文章读懂Java哈希与一致性哈希算法

    目录 哈希 Hash 算法介绍 分布式存储场景 场景描述: 实现思路: 缺点: 一致性Hash算法 节点增加场景 节点减少场景 节点分布不均匀 虚拟节点 增加节点 节点减少 总结 哈希 Hash 算法介绍 哈希算法也叫散列算法, 不过英文单词都是 Hash, 简单一句话概括, 就是可以把任意长度的输入信息通过算法变换成固定长度的输出信息, 输出信息也就是哈希值, 通常哈希值的格式是16进制或者是10进制, 比如下面的使用 md5 哈希算法的示例 md5("123456") =>

  • 一篇文章看懂C#中的协变、逆变

    1. 基本概念 官方:协变和逆变都是术语,前者指能够使用比原始指定的派生类型的派生程度更大(更具体的)的类型,后者指能够使用比原始指定的派生类型的派生程度更小(不太具体的)的类型.[MSDN] 公式: 协变:IFoo<父类> = IFoo<子类>: 逆变:IBar<子类> =  IBar<父类>: 暂时不理解没关系,您接着往下看. 2. 协变(Covariance) 1) out关键字 对于泛型类型参数,out 关键字可指定类型参数是协变的. 可以在泛型接口

  • 一篇文章弄懂Java和Kotlin的泛型难点

    Java 和 Kotlin 的泛型算作是一块挺大的知识难点了,涉及到很多很难理解的概念:泛型型参.泛型实参.类型参数.不变.型变.协变.逆变.内联等等.本篇文章就将 Java 和 Kotlin 结合着一起讲,按照我的个人理解来阐述泛型的各个知识难点,希望对你有所帮助

  • 一篇文章看懂JavaScript中的回调

    前言 回调函数是每个前端程序员都应该知道的概念之一.回调可用于数组.计时器函数.promise.事件处理中. 本文将会解释回调函数的概念,同时帮你区分两种回调:同步和异步. 回调函数 首先写一个向人打招呼的函数. 只需要创建一个接受 name 参数的函数 greet(name).这个函数应返回打招呼的消息: function greet(name) { return `Hello, ${name}!`; } greet('Cristina'); // => 'Hello, Cristina!'

  • 一篇文章看懂MySQL主从复制与读写分离

    目录 引言 一.MySQL主从复制 1.MySQL的复制类型 2.MySQL主从复制的原理 3.MySQL主从复制延迟 二.MySQL读写分离 1.常见的 MySQL 读写分离分 2.MySQL 读写分离原理 三.MySQL主从复制与读写分离配置步骤 1.搭建环境 2.解决需要 3.准备阶段(关闭防火墙及控制访问机制) 4.搭建MySQL主从复制 5.搭建MySQL读写分离步骤 6.测试测试读写分离 总结 引言 企业中的业务通常数据量都比较大,而单台数据库在数据存储.安全性和高并发方面都无法满足

  • 一篇文章看懂SQL中的开窗函数

    目录 OVER的定义 OVER的语法 OVER的用法 OVER在聚合函数中使用的示例 SUM后的开窗函数 COUNT后的开窗函数 OVER在排序函数中使用的示例 ROW_NUMBER() RANK() DENSE_RANK() NTILE() 总结 OVER的定义 OVER用于为行定义一个窗口,它对一组值进行操作,不需要使用GROUP BY子句对数据进行分组,能够在同一行中同时返回基础行的列和聚合列. OVER的语法 OVER ( [ PARTITION BY column ] [ ORDER

随机推荐