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

【JavaSE】String类中常用的字符串方法(超全)

 

目录

1.求字符串的长度

2.判断字符串是否为空

3.String对象的比较

3.1 判断字符串是否相同

 3.2 比较字符串大小

 3.3 忽略大小写比较

4.字符串查找

5.转化

5.1 数值和字符串转化

5.1.1 数字转字符串 valueof

5.1.2 valueOf的其他用法

5.1.3 字符串转数字

5.2 大小写转换

小写转大写

大写转小写

5.3 字符数组转字符串

5.4 字符串转数组

5.5 格式化

6.字符串替换

7.字符串拆分

8.字符串截取

9.其他操作方法


1.求字符串的长度

作用

返回此字符串的长度。 长度等于字符串中的数字Unicode code units 。

结果

返回该对象表示的字符序列的长度。

代码示例:

String str1 = "hello";
String str2 = "Hello world";
String str3 = "";
System.out.println(str1.length());
System.out.println(str2.length());
System.out.println(str3.length());

输出结果:


2.判断字符串是否为空

 结果

  当字符串长度为0的时候返回 true,否则返回 false

 代码示例:

String str1 = "hello";
String str2 = "";
System.out.println(str1.isEmpty());
System.out.println(str2.isEmpty());

输出结果:


3.String对象的比较

3.1 判断字符串是否相同

作用

将此字符串与指定对象进行比较。 其结果是true当且仅当该参数不是null并且是String对象,表示相同的字符序列作为该对象。

结果

true如果给定的对象代表一个 String等效于这个字符串, false否则

代码示例:

String str1 = "hello";
String str2 = "hello";
String str3 = "world";
System.out.println(str1.equals(str2));
System.out.println(str1.equals(str3));

输出结果:


 3.2 比较字符串大小

作用 

按字典顺序比较两个字符串。 比较是基于字符串中每个字符的Unicode值。 由该String对象表示的字符序列按字典顺序与由参数字符串表示的字符序列进行比较。 如果String对象按字典顺序排列在参数字符串之前,结果为负整数。 结果是一个正整数,如果String对象按字典顺序跟随参数字符串。 如果字符串相等,结果为零; compareTo返回0 ,当equals(Object)方法将返回true

结果

如果参数字符串等于此字符串,则值为0 ; 一个值小于0如果这个字符串的字典比字符串参数小; 如果此字符串的字典大小超过字符串参数,则值大于0

代码示例:

String str1 = "abc";
String str2 = "abc";
String str3 = "def";
System.out.println(str1.compareTo(str2));
System.out.println(str1.compareTo(str3));

输出结果:


 3.3 忽略大小写比较

 与compareTo方式相同,但是忽略大小写比较

代码示例:

String str1 = "hello";
String str2 = "Hello";
String str3 = "abcde";
System.out.println(str1.compareToIgnoreCase(str2));
System.out.println(str1.compareToIgnoreCase(str3));

输出结果:


4.字符串查找

字符串查找也是字符串中非常常见的操作,String类提供的常用查找的方法:

 


 作用

返回char指定索引处的值。 指数范围为0length() - 1 。 该序列的第一个char值在索引0 ,下一个索引为1 ,依此类推,与数组索引一样。

代码示例:

String str1 = "hello";
System.out.println(str1.charAt(0));
System.out.println(str1.charAt(1));
System.out.println(str1.charAt(2));
System.out.println(str1.charAt(3));
System.out.println(str1.charAt(4));

输出结果:


 

 参数只有一个的时候

作用 

 返回指定字符(或字符串)在字符串中第一次出现的下标。找不到返回-1。

 代码示例:

String str1 = "ababcab";
int index1 = str1.indexOf("abc");
int index2 = str1.indexOf("ab");
int index3 = str1.indexOf('b');
int index4 = str1.indexOf("c");
System.out.println(index1);
System.out.println(index2);
System.out.println(index3);
System.out.println(index4);

 输出结果:

 

 有两个参数的时候

 作用

以指定的下标开始搜索,返回指定字符(或字符串)第一次出现在字符串内的下标。

代码示例:

String str1 = "ababcab";
int index1 = str1.indexOf("ab",4);//从str1中下标4位置开始查找
int index2 = str1.indexOf('b',2); //从str1中下标2位置开始查找
System.out.println(index1);
System.out.println(index2);

  输出结果:

 


  参数只有一个的时候

 

作用 

 从后往前找,返回指定字符(或字符串)第一次出现的位置,没有返回-1

 

  有两个参数的时候

 

 作用 

 从fromIndex位置开始找,从后往前找指定字符(或字符串)第一次出现的位置,没有返 回-1

代码示例:

String str1 = "ababcababcd";
int index1 = str1.lastIndexOf("abc");
int index2 = str1.lastIndexOf("abc",5); //从5位置倒着往回找
int index3 = str1.lastIndexOf('c');
int index4 = str1.lastIndexOf('c',5);   //从5位置倒着往回找
System.out.println(index1);
System.out.println(index2);
System.out.println(index3);
System.out.println(index4);

 输出结果:


5.转化

5.1 数值和字符串转化

5.1.1 数字转字符串 valueof

valueOf的部分重载方法 

 这些方法都是将数字转化成字符串。

代码示例:

String str1 = String.valueOf(1234);
String str2 = String.valueOf(3.14);
System.out.println(str1);
System.out.println(str2);

 输出结果:

 

5.1.2 valueOf的其他用法

 使用一:

作用

返回 Object参数的字符串形式。

 使用二:

作用

返回将char型的字符数组转化为字符串后的形式

 使用三:

作用

如果参数为true ,则返回等于"true"的字符串; 否则,等于一个字符串"false"返回。

 使用四:

 作用

返回 char参数的字符串形式。

这些方法和数字转成字符串的方法类似,就不用代码进行演示了。

5.1.3 字符串转数字

代码示例:

int data1 = Integer.parseInt("1234");
double data2 = Double.parseDouble("12.34");
System.out.println(data1);
System.out.println(data2);

 输出结果:

 

5.2 大小写转换

小写转大写

 代码示例:

String s1 = "hello";
String s2 = "Hello";
String ret1 = s1.toUpperCase();
String ret2 = s2.toUpperCase();
System.out.println(ret1);
System.out.println(ret2);

 输出结果:

 

大写转小写

 代码示例:

String s1 = "HELLO";
String s2 = "Hello";
String ret1 = s1.toLowerCase();
String ret2 = s2.toLowerCase();
System.out.println(ret1);
System.out.println(ret2);

 输出结果:

5.3 字符数组转字符串

代码示例:

char[] array1 = {'a','b','c'};
String str1 = new String(array1);
System.out.println(str1);

输出结果:

 

5.4 字符串转数组

作用 

 将字符串转换为新的字符数组。

 代码示例:

String s1 = "hello";
char[] array = s1.toCharArray();
System.out.println(Arrays.toString(array));

输出结果:

 

5.5 格式化

使用指定的格式字符串和参数返回格式化的字符串。

代码示例:

String str = String.format("%d-%d-%d",2023,8,7);
System.out.println(str);

输出结果:

 

6.字符串替换

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

参数

regex - 要匹配此字符串的正则表达式

replacement - 要替换第一个匹配的字符串

作用

  1. 从原始字符串的开头开始,搜索并找到第一个与正则表达式匹配的子串。
  2. 将该匹配项替换为指定的新字符串。
  3. 返回替换后的新字符串。

代码示例:

String str = "abcd abcd abcd";
String ret1 = str.replaceFirst("ab","OO");
System.out.println(ret1);

输出结果:

 

参数 

regex 参数是一个正则表达式,用于匹配原始字符串中的子串。

replacement 参数是要替换匹配项的新字符串。 

作用 

  1. 从原始字符串的开头开始,搜索并找到所有与正则表达式匹配的子串。
  2. 将每个匹配项都替换为指定的新字符串。
  3. 返回替换后的新字符串。

代码示例:

String str = "abcd abcd abcd";
String ret1 = str.replaceAll("ab","OO");
System.out.println(ret1);

输出结果: 

需要注意的是,replaceAll方法使用的是正则表达式进行匹配,因此在使用时需要注意正则表达式的语法和特殊字符的转义。如果不需要使用正则表达式进行匹配,可以考虑使用replace方法来进行简单的字符串替换。

 重载1

作用 

通过用 newChar 字符替换字符串中出现的所有 oldChar 字符,并返回替换后的新字符串。

  重载2

将与字面目标序列匹配的字符串的每个子字符串替换为指定的字面替换序列。 替换从字符串开始到结束,例如,在字符串“aaa”中用“b”替换“aa”将导致“ba”而不是“ab”。

参数

target - 要替换的char值序列

replacement - char值的替换顺序

代码示例:

String str = "abcd abcd abcd";
String ret1 = str.replace("ab","OO");
String ret2 = str.replace('a','A');
System.out.println(ret1);
System.out.println(ret2);

输出结果:

7.字符串拆分

可以将一个完整的字符串按照指定的分隔符划分为若干个子字符串。 可用方法如下:

 重载方法1:

作用

  1. 从原始字符串中找到所有与分隔符匹配的子串,并根据分隔符将原始字符串分割成多个子串。
  2. 将这些子串存储在一个字符串数组中。
  3. 返回该字符串数组。

 代码示例1:

String str = "hello abc world";
String[] ret = str.split(" ");
for (int i = 0; i < ret.length; i++) {System.out.println(ret[i]);
}

 输出结果1:

 代码示例2:拆分IP地址

String str = "192.168.1.1";
String[] ret = str.split("\\.");
for (int i = 0; i < ret.length; i++) {System.out.println(ret[i]);
}

 输出结果2:

 代码示例:

String str = "name=zhangsan&age=10";
String[] ret = str.split("=|&");//用=和&分割
for (int i = 0; i < ret.length; i++) {System.out.println(ret[i]);
}

  输出结果3

注意事项:

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

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

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

代码示例3: 多次拆分

 结果和上面输出结果3相似。

 重载方法2:

  作用

  1. 从原始字符串中找到与正则表达式匹配的子串。
  2. 将原始字符串分割成多个子串,每个子串都保存在数组中。
  3. 只保存前limit-1个子串,如果limit为负数或为零,则不限制分割数。
  4. 将剩余的未分割的部分作为数组的最后一个元素保存。

 代码示例:

String str = "hello abc world";
String[] ret = str.split(" ",2);//限制分割组数为2组
for (int i = 0; i < ret.length; i++) {System.out.println(ret[i]);
}

 输出结果:

 

8.字符串截取

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

代码示例:

String str = "abcdefg";
String ret1 = str.substring(0,3); //截取下标0~2字符串
String ret2 = str.substring(3); //截取下标3以后的字符串
System.out.println(ret1);
System.out.println(ret2);

输出结果:

 注意事项:

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

9.其他操作方法

 代码示例:

String str = " abcde fg hijk ";
System.out.println(str);
System.out.println(str.trim());

 输出结果:

     文章到这里就结束啦,如果有什么地方写得还不到位欢迎在评论区提出来,如果觉得有收获的话记得给文章三连支持哦~~🤣🤣

相关文章:

【JavaSE】String类中常用的字符串方法(超全)

目录 1.求字符串的长度 2.判断字符串是否为空 3.String对象的比较 3.1 判断字符串是否相同 3.2 比较字符串大小 3.3 忽略大小写比较 4.字符串查找 5.转化 5.1 数值和字符串转化 5.1.1 数字转字符串 valueof 5.1.2 valueOf的其他用法 5.1.3 字符串转数字 5.2 大小写转…...

Bootload U-Boot分析

Bootloader是在操作系统运行之前执行的一段小程序。通过这段小程序可以初始化硬件设备、建立内存空间的映射表&#xff0c;从而建立适当的系统软硬件环境&#xff0c;为最终调用操作系统内核做好准备。 对于嵌入式系统&#xff0c;Bootloader是基于特定硬件平台来实现的。因此…...

以公益之行,筑责任之心——2023年中创算力爱心公益助学活动

捐资助学是一项功在当代、利在千秋的义举。 高考录取工作已经开始&#xff0c;一张张高校录取通知书也陆续送达各位准大学生手中。当他们怀揣着对大学的好奇与憧憬&#xff0c;准备迈进理想的大学时&#xff0c;还有一群人&#xff0c;他们渴望知识&#xff0c;却因经济困难而…...

【机器学习】处理样本不平衡的问题

文章目录 样本不均衡的概念及影响样本不均衡的解决方法样本层面欠采样 &#xff08;undersampling&#xff09;过采样数据增强 损失函数层面模型层面采样集成学习 决策及评估指标 样本不均衡的概念及影响 机器学习中&#xff0c;样本不均衡问题经常遇到&#xff0c;比如在金融…...

Android前沿技术?Jetpack如何?

Jetpack Compose是Android开发领域的一项前沿技术&#xff0c;它提供了一种全新的方式来构建用户界面。近年来&#xff0c;Jetpack Compose在各大招聘等网站上的招聘岗位逐渐增多&#xff0c;薪资待遇也相应提高。本文将从招聘岗位的薪资与技术要求入手&#xff0c;分析Jetpack…...

为react项目添加开发/提交规范(前端工程化、eslint、prettier、husky、commitlint、stylelint)

因历史遗留原因&#xff0c;接手的项目没有代码提醒/格式化&#xff0c;包括 eslint、pretttier&#xff0c;也没有 commit 提交校验&#xff0c;如 husky、commitlint、stylelint&#xff0c;与其期待自己或者同事的代码写得完美无缺&#xff0c;不如通过一些工具来进行规范和…...

小研究 - MySQL 数据库安全加固技术的研究(一)

随着信息系统的日益普及&#xff0c;后台数据库的安全问题逐步被人们重视起来。以当下热门的MySQL 数据库为例&#xff0c;通过分析数据库的安全机制以及总结数据库面临的安全风险&#xff0c;针对性地提出了相应的加固策略&#xff0c;为数据库的安全加固工作提供了技术支撑。…...

linux安装redis带图详细

如何在Linux系统中卸载Redis 一、使用apt-get卸载Redis sudo apt-get purge redis-server如果使用apt-get安装Redis&#xff0c;可以使用apt-get purge命令完全卸载Redis。其中&#xff0c;purge命令会不仅仅删除Redis二进制文件&#xff0c;还会删除配置文件、数据文件和日志…...

MySql——数据库常用命令

一、关于数据库的操作 查看mysql中有哪些数据库 show databases;显示创建指定数据库MySQL语句 SHOW CREATE DATABASE 数据库名&#xff1a;使用指定数据库 use 数据库名;查看当前使用的是哪个数据库 select database();查看指定数据库下有哪些表 use 数据库名; -- 先选择…...

如何通过 WordPress 数据库启用插件?【进不去后台可用】

如果您无法访问 WordPress 后台并需要激活插件以恢复访问权限&#xff0c;则可以通过 WordPress 数据库来实现。本文将向您展示如何使用数据库轻松激活 WordPress 插件。 何时使用数据库激活 WordPress 插件&#xff1f; 许多常见的 WordPress 错误会阻止网站所有者访问 WordP…...

芯片热处理设备 HTR-4立式4寸快速退火炉

HTR-4立式4寸快速退火炉 HTR-4立式4寸快速退火炉&#xff08;芯片热处理设备&#xff09;广泛应用在IC晶圆、LED晶圆、MEMS、化合物半导体和功率器件等多种芯片产品的生产&#xff0c;和欧姆接触快速合金、离子注入退火、氧化物生长、消除应力和致密化等工艺当中&#xff0c;通…...

小研究 - 基于 MySQL 数据库的数据安全应用设计(一)

信息系统工程领域对数据安全的要求比较高&#xff0c;MySQL 数据库管理系统普遍应用于各种信息系统应用软件的开发之中&#xff0c;而角色与权限设计不仅关乎数据库中数据保密性的性能高低&#xff0c;也关系到用户使用数据库的最低要求。在对数据库的安全性进行设计时&#xf…...

mysql转sqlite3

在项目中需要将mysql迁移到sqlite3中&#xff0c;此时需要作数据转换 准备工作 下载mysql2sqlite转换工具 https://github.com/dumblob/mysql2sqlite/archive/refs/heads/master.zip 下载sqlite3 https://www.sqlite.org/download.html 转换 命令行中输入如下命令 1、cd …...

在linux中使用 ./configure 时报错

./configure --build编译平台 --host运行平台 --target目标平台 1. configure: error: cannot guess build type&#xff1b; you must specify one 解决办法&#xff1a;指定编译平台 ./configure --buildarm 2. configure: error: Either a previously installed…...

【LeetCode 算法】Reverse String 反转字符串

文章目录 Reverse String 反转字符串问题描述&#xff1a;分析代码双指针 Tag Reverse String 反转字符串 问题描述&#xff1a; 编写一个函数&#xff0c;其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。 不要给另外的数组分配额外的空间&#xff0c…...

linux sysctl.conf 常用参数配置

kernel.sysrq 0 kernel.core_uses_pid 1 kernel.msgmnb 65536#默认为16384&#xff0c;调高 kernel.msgmax 65536#默认为16384&#xff0c;调高 kernel.shmmax 68719476736#以sctl -a实际查询出的为准 kernel.shmall 4294967296#以sctl -a实际查询出的为准 net.ipv4.ip_f…...

【stm32】初识stm32—stm32环境的搭建

文章目录 &#x1f6f8;stm32资料分享&#x1f354;stm32是什么&#x1f384;具体过程&#x1f3f3;️‍&#x1f308;安装驱动&#x1f388;1&#x1f388;2 &#x1f3f3;️‍&#x1f308;建立Start文件夹 &#x1f6f8;stm32资料分享 我用夸克网盘分享了「STM32入门教程资料…...

Spring Boot3.0基础篇(二):Web 开发

Web 开发 Spring Boot Web 开发非常的简单&#xff0c;其中包括常用的 json 输出、filters、property、log 等 json 接口开发 在以前使用 Spring 开发项目&#xff0c;需要提供 json 接口时需要做哪些配置呢 添加 jackjson 等相关 jar 包配置 Spring Controller 扫描对接的方…...

【WebRTC---源码篇】(三:一)音频轨

音频轨的创建时序在Conductor::AddTracks()中 rtc::scoped_refptr<webrtc::AudioTrackInterface> audio_track(peer_connection_factory_->CreateAudioTrack(kAudioLabel, peer_connection_factory_->CreateAudioSource(cricket::AudioOptions()))); 通过代码我们…...

POM文件总体配置详细说明

今天跑一个项目&#xff0c;报错显示他的pom文件有问题&#xff0c;需要一个标准的pom文件对比&#xff0c;希望能帮到各位&#xff01; <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance" …...

基于Flask实现的医疗保险欺诈识别监测模型

基于Flask实现的医疗保险欺诈识别监测模型 项目截图 项目简介 社会医疗保险是国家通过立法形式强制实施&#xff0c;由雇主和个人按一定比例缴纳保险费&#xff0c;建立社会医疗保险基金&#xff0c;支付雇员医疗费用的一种医疗保险制度&#xff0c; 它是促进社会文明和进步的…...

postgresql|数据库|只读用户的创建和删除(备忘)

CREATE USER read_only WITH PASSWORD 密码 -- 连接到xxx数据库 \c xxx -- 授予对xxx数据库的只读权限 GRANT CONNECT ON DATABASE xxx TO read_only; GRANT USAGE ON SCHEMA public TO read_only; GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only; GRANT EXECUTE O…...

Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!

一、引言 在数据驱动的背景下&#xff0c;知识图谱凭借其高效的信息组织能力&#xff0c;正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合&#xff0c;探讨知识图谱开发的实现细节&#xff0c;帮助读者掌握该技术栈在实际项目中的落地方法。 …...

JDK 17 新特性

#JDK 17 新特性 /**************** 文本块 *****************/ python/scala中早就支持&#xff0c;不稀奇 String json “”" { “name”: “Java”, “version”: 17 } “”"; /**************** Switch 语句 -> 表达式 *****************/ 挺好的&#xff…...

JUC笔记(上)-复习 涉及死锁 volatile synchronized CAS 原子操作

一、上下文切换 即使单核CPU也可以进行多线程执行代码&#xff0c;CPU会给每个线程分配CPU时间片来实现这个机制。时间片非常短&#xff0c;所以CPU会不断地切换线程执行&#xff0c;从而让我们感觉多个线程是同时执行的。时间片一般是十几毫秒(ms)。通过时间片分配算法执行。…...

什么是Ansible Jinja2

理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具&#xff0c;可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板&#xff0c;允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板&#xff0c;并通…...

springboot整合VUE之在线教育管理系统简介

可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生&#xff0c;小白用户&#xff0c;想学习知识的 有点基础&#xff0c;想要通过项…...

uniapp 小程序 学习(一)

利用Hbuilder 创建项目 运行到内置浏览器看效果 下载微信小程序 安装到Hbuilder 下载地址 &#xff1a;开发者工具默认安装 设置服务端口号 在Hbuilder中设置微信小程序 配置 找到运行设置&#xff0c;将微信开发者工具放入到Hbuilder中&#xff0c; 打开后出现 如下 bug 解…...

yaml读取写入常见错误 (‘cannot represent an object‘, 117)

错误一&#xff1a;yaml.representer.RepresenterError: (‘cannot represent an object’, 117) 出现这个问题一直没找到原因&#xff0c;后面把yaml.safe_dump直接替换成yaml.dump&#xff0c;确实能保存&#xff0c;但出现乱码&#xff1a; 放弃yaml.dump&#xff0c;又切…...

【1】跨越技术栈鸿沟:字节跳动开源TRAE AI编程IDE的实战体验

2024年初&#xff0c;人工智能编程工具领域发生了一次静默的变革。当字节跳动宣布退出其TRAE项目&#xff08;一款融合大型语言模型能力的云端AI编程IDE&#xff09;时&#xff0c;技术社区曾短暂叹息。然而这一退场并非终点——通过开源社区的接力&#xff0c;TRAE在WayToAGI等…...