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

Java基础:字符串(String)及常用操作

目录

字符串的声明及创建

字符串的操作

连接字符串(+或concat)

获取字符串的长度 length

查找字符串 indexOf

获取字符串某个位置的字符 charAt

查询某个字符串是否存在 contains

截取字符串 substring(一)

截取字符串 substring(二)

去除前后空格 trim

字符串替换 replace(一)

字符串替换 replace(二)

字符串替换 replace(三)

判断字符串的开始 startsWith(一)

判断字符串的开始 startsWith(二)

判断字符串的结尾 endsWith

分割字符串 split

判断两个字符串是否相等 equals

其它



字符串的声明及创建

字符串的声明及赋值

//声明字符串变量a
String a;//同时声明字符串b和c
String b,c;
//给b赋值
b="我是B";//声明字符串并赋值
String d="我是D";
String e="我是E",f="我是F";

使用new创建String对象

//使用new创建String对象
String g=new String("我是G");

使用字符数组创建String对象

//使用字符数组创建String对象
char[] charArr={'我','是','H'};
String h=new String(charArr);//h="我是H"char[] charArr1={'1','2','3','4','5','6'};
//从字符数组中提取,从索引为3的位置开始提取2个字符
String i=new String(charArr1,3,2);//i="45"

字符串的操作

功能

举例

连接字符串(+或concat)

使用“+”号连接字符串

  语法  

str1+str2             连接两个字符串

str1.concat(str2)        str1末尾增加字符串str2

  举例  

  结果  

 把a和b连接起来:我是一个中国人
把a和b连接起来,并在最后增加一个感叹号:我是一个中国人!
我今年12岁,明年我就是121岁
我今年12岁,明年我就是13岁

  要点  

  • 使用“+”连接两个字符串
  • 使用“concat”在末尾增加字符串
  • 字符串和其他类型(如int、float类型)连接是,会先将其它类型直接转字符串
  • 注意输出结果3和输出结果4的区别
  • 字符串太长,可以使用+号换行

String d="我是"+

"一个中国人";

获取字符串的长度 length

str.length()

  语法  

str.length()              

作用:获取字符串str的长度

  • str:任意字符串

  举例  

  结果  

a的长度:14

  要点  

  • 一个中文只占一个长度
  • 空格也占一个长度

查找字符串 indexOf

indexOf(String s)

lastIndexOf(String s)

  语法  

str.indexOf(String s)     

作用:获取s在str中第一次出现的位置

  • str:任意字符串
  • s:要查找的字符串

str.lastIndexOf(String s)     

返回:s在str中最后一次出现的位置

  • str:任意字符串
  • s:要查找的字符串

  举例  

  结果  

大写C在字符串中的位置:2
小写c在字符串中的位置:-1
大写C在字符串中最后出现的位置:6

空字符串最后出现的位置:7

  要点  

  • indexOf是查找的字符或字符串首次出现的位置
  • lastIndexOf是查找的字符或字符串最后一次出现的位置
  • 返回的位置是从0开始的
  • 如果不存在,则返回 -1
  • 空字符串使用lastIndexOf查找的位置等于字符串的总长度

获取字符串某个位置的字符 charAt

str.charAt(int index)

  语法  

str.charAt(int index)             

作用:获取在str中index位置的字符

  • str:任意字符串
  • index:指定要返回字符的下标
  举例  

  结果  

字符串中第3个位置的字符是:C
 

  要点  

  • 位置从0开始,即0表示第一个位置

查询某个字符串是否存在 contains

str.contains(string str1)

  语法  

str.contains(string str1)

作用:查询str是否存在str1

  • str:任意字符串
  • str1:查询的某个字符串

  举例  

  结果  

ABC23是否包含C2:true
ABC23是否包含ABC23:true

截取字符串 substring(一)

substring(int beginIndex)

  语法  

str.substring(int beginIndex)

作用:获取从beginIndex位置开始截取直到str结尾的子串

  • str:任意字符串
  • beginIndex:开始截取的索引位置

  举例  

  结果  

从第3个位置开始截取,得到的字符串::CDEFC

截取字符串 substring(二)

substring(int beginIndex,int endIndex)

  语法  

str.substring(int beginIndex,int endIndex)

作用:从beginIndex位置开始截取至endIndex位置结束的子串

  • str:任意字符串
  • beginIndex:开始截取的索引位置
  • endIndex:截取的结束位置

  举例  

  结果   

从第3个位置开始,截取至第5个位置结束,得到的字符串::CDE
 

去除前后空格 trim

trim()

  语法  

str.trim()                

作用:去除str前后空格

  • str:任意字符串

  举例  

  结果  

去空格后得到的字符串:ABC D EFC

  要点  

  • trim()只能去掉字符串的前后空格,不能去除字符串中间的空格

字符串替换 replace(一)

replace(oldchar,newchar)

  语法  

str.replace(oldstr,newstr)                

作用:把str中所有的oldstr替换成newstr

  • str:任意字符串
  • oldstr:要被替换的字符串
  • newstr:替换后的字符串

  举例  

  结果  

把a替换成b: ABCD-ABCD
把A替换成b: bBCD-bBCD

把a替换成b的时候,因为字符串中没有小写“a”,所以返回原字符串。

  要点  

  • 如果被替换的字符oldstr在字符串中出现多次,会将所有的oldstr替换成newstr

字符串替换 replace(二)

replaceAll(String regex,String replacement)

  语法  

str.replaceAll(String regex,String replacement)                

作用:把str中所有的regex(或符合正则表达式的)替换成replacement,和replace最大的区别就是:replace不支持正则表达式,而replaceAll支持正则表达式

  • str:任意字符串
  • regex:要被替换的字符串或正则表达式
  • replacement:替换后的字符串

  举例  

  结果  

把\d替换成*: ABCD123*
把数字替换成*: ABCD***\d

例子中的 \d 在replace中表示的就是“\d” 这个字符串,而在replaceAll中表示的是一个表示数字的正则表达式。 

字符串替换 replace(三)

replaceFirst(String regex,String replacement)

  语法  

str.replaceFirst(String regex,String replacement)                

作用:把str中第一次出现的regex(或符合正则表达式的)替换成replacement,支持正则表达式

  • str:任意字符串
  • regex:要被替换的字符串或正则表达式
  • replacement:替换后的字符串

  举例  

  结果  

把第一个出现的3替换成*:ABC12*123
把第一个出现的数字替换成*:ABC*23123

判断字符串的开始 startsWith(一)

startsWith(String prefix)

  语法  

str.srartsWith(String prefix)                

作用:判断str是否以prefix开始,返回true或false

  • str:任意字符串
  • prefix:前缀字符串

  举例  

  结果  

ABC123123是否以ABC开头:true
ABC123123是否以abc开头:false

判断字符串的开始 startsWith(二)

startsWith(String prefix,int index)

  语法  

str.srartsWith(String prefix,int index)                

作用:从索引index位置开始判断str是否以prefix开始,返回true或false

  • str:任意字符串
  • index:开始查找的位置
  • prefix:前缀字符串

  举例  

  结果  

ABC123123是否以BC开头:false
ABC123123从第二位置开始,是否以BC开头:true

判断字符串的结尾 endsWith

endsWith(String suffix)

  语法  

str.srartsWith(String suffix)                

作用:判断str是否以suffix结尾,返回true或false

  • str:任意字符串
  • suffix:后缀字符串

  举例  

  结果  

ABC23是否以23结尾:true
ABC23是否以ABC23结尾:true

分割字符串 split

split(String regex)

  语法  

str.split(String regex)                

作用:根据指定的分隔符regex(支持正则表达式)对str进行拆分,返回一个数组

  • str:任意字符串
  • suffix:分隔符

str.split(String regex,int limit)                

作用:根据指定的分隔符regex(支持正则表达式)对str进行拆分,返回一个数组

  • str:任意字符串
  • suffix:分隔符
  • limit:分割次数

  举例  

  结果  

判断两个字符串是否相等 equals

str.equals(str1)

  语法  

str.equals(String str1)                

作用:判断str是否等于str1(具有相同的字符序列)

  • str:任意字符串
  • str1:任意字符串

  举例  

  结果  

str1==str2的结果:false
str1.equals(str2)的结果:true

  要点  

  • 注意==和equals的区别

其它

  举例  

  结果  

 abc DED  转小写: abc ded  
 abc DED  转大写: ABC DED  

相关文章:

Java基础:字符串(String)及常用操作

目录 字符串的声明及创建 字符串的操作 连接字符串(或concat) 获取字符串的长度 length 查找字符串 indexOf 获取字符串某个位置的字符 charAt 查询某个字符串是否存在 contains 截取字符串 substring(一) 截取字符串 su…...

FL Studio 21中文版支持主题随心换,FL Studio 21Mac版新增对苹果M2/1家族芯片原生支持。

FL Studio 21.0.0 官方中文版重磅发布 纯正简体中文支持,更快捷的音频剪辑及素材管理器,多样主题随心换! Mac版新增对苹果M2/1家族芯片原生支持。 更新版本:21.0.0支持语言:简体中文/英语更新时间:2022.12…...

【蓝桥杯集训·周赛】AcWing 第96场周赛

文章目录第一题 AcWing 4876. 完美数一、题目1、原题链接2、题目描述二、解题报告1、思路分析2、时间复杂度3、代码详解第二题 AcWing 4877. 最大价值一、题目1、原题链接2、题目描述二、解题报告1、思路分析2、时间复杂度3、代码详解第三题 AcWing 4878. 维护数组一、题目1、原…...

【数据结构】顺序表的深度刨剖析

前言:在上一篇文章中,我们已经对数据结构有了一定了解,我们可以通过优化空间复杂度或者时间复杂度从而提高我们程序运行或存储速率。至此我们就知道了数据结构的重要性,所以今天我们将要了解和学习一种实用的数据结构——线性表。…...

Unity 之 使用原生UGUI实现随手移动摇杆功能经典实例

Unity 之 使用原生UGUI实现随手移动摇杆功能实现效果一,实现思路1.1 原理解析1.2 思路概述二,实现代码2.1 随手落下2.2 摇杆转动三,源码分享3.1 场景搭建3.2 完整代码3.3 实现效果实现效果 本文最终实现效果: 一,实现…...

Linux内核源代码概述

Linux内核源代码非常庞大,截止到2015年据统计代码总量就已经超过1500万行(LOC,Line of Code),看代码总量非常吓人,具体看这1500万行代码的大致分布情况如下图。 显然占比最大的drivers和arch目录下的代码合…...

Nginx 教程-动静分离

一、Nginx 动静分离理论1、概念今天学习和梳理Nginx动静分离,动静分离是将网站静态资源(HTML,JavaScript,CSS,img等文件)与后台应用分开部署,之所以要进行动静分离,其一为了提高前端…...

自己设计的网站,如何实现分页功能?(详细代码+注释)

目录 前言 实现分页功能 需求分析 客户端开发 服务器开发 前后端交互——两种前端得到 文章总页数 的方法,那种更合适? 前言 你在设计网站的时候是否有过这样的烦恼:“我设计的网站怎么就是从上到下一条线内容全部展开,一点都…...

STM32F407控制微型推拉式电磁铁(通过继电器)

1、继电器 继电器相当于开关,单片机通过io口高低电平的控制来控制继电器的开闭。采用继电器的好处除了能够用低电压控制高电压(如32单片机控制220V的电压)外,还可以防止电流反冲,弄烧单片机。 本文采用3.3v的电磁铁&am…...

VS Code工作区用法

背景VS Code可以通过"文件/打开文件夹"来打开本地项目,但是想要打开多个项目便需要来回切换,比较费劲。此时就可以使用工作区功能,将不同的项目放置到同一个工作区中,这样切换项目的时候就会非常方便。操作方法打开其中…...

Mybatis-Plus SQLFeatureNotSupportedException: getObject with type问题解决

问题描述: Error attempting to get column modify_time from result set. Cause: java.sql.SQLFeatureNotSupportedException: getObject with type ; getObject with type; nested exception is java.sql.SQLFeatureNotSupportedException: getObject with type…...

Unity | 发布Android的那些事儿

1.使用UnityWebRequest获取StreamingAssets中的json文件(1)直接根据不同平台指定url路径IEnumerator AITalPredZhanHui(){string url;string fileName "girl.json"; #if UNITY_EDITOR || UNITY_STANDALONEurl "file://" Applicat…...

git为什么要先commit,然后pull,最后再push?而不是commit完直接push?

情况是这样的,现在远程有一个仓库,分支就一个,是master。然后我本地的仓库是从远程的master上clone下来的。大家都是clone下来,再在自己本地改好,再commit然后pull然后push,大家都是这么做的。那么现在问题…...

若依框架----源码分析(@RateLimiter)

若依作为最近非常火的脚手架,分析它的源码,不仅可以更好的使用它,在出错时及时定位,也可以在需要个性化功能时轻车熟路的修改它以满足我们自己的需求,同时也可以学习人家解决问题的思路,提升自己的技术水平…...

页面的重排和重绘?

思路: 网页渲染HTML文件到浏览器的过程->定义->如何优化网页渲染HTML文件到浏览器的过程HTML 文件通过HTML解析器解析生成DOM树;CSS文件通过CSS解析器生成CSSOM树;DOM树和CSSOM树生成渲染树(render tree)&#x…...

人脸检测-python和c++实现

人脸检测是计算机视觉领域中的一个重要应用,其目的是从图像或视频中自动检测出其中的人脸,并对其进行识别、跟踪等操作。人脸检测技术已经广泛应用于安防、人机交互、娱乐等领域,具有广泛的应用前景。 人脸检测的基本思路可以分为以下几个步骤: 图像预处理:首先需要对输入…...

PowerJob源码环境搭建

一、IEDA导入PowerJob源码 gitgithub.com:PowerJob/PowerJob.gitPowerJob 由调度服务器(powerjob-server)和执行器(powerjob-worker)两部分组成 powerjob-server 负责提供 Web 服务和完成任务的调度powerjob-worker 则负责执行用…...

天梯赛刷题小记 —— L2

最近在重刷 天梯赛&#xff0c;浅浅记录一下&#xff0c;进入L2阶段了 L2-001 紧急救援 解题思路&#xff1a;典型的dijkstra模板题&#xff0c;带路径记录与权重&#xff0c;方案数记录&#xff0c;解析出过 Dijkstra(兼路径) #include <bits/stdc.h> #define inf…...

Prometheus监控实战系列十九:监控Kubernetes集群(上)

Kuberentes是一款开源的容器编排产品&#xff0c;由Google开发后发布到社区&#xff0c;并在2015年将该项目捐献给了云原生基金会&#xff08;Cloud Native Computing Foundation&#xff09;。从2014年第一个版本发布以来&#xff0c;Kubernetes便迅速获得开源社区的追捧&…...

番茄学习法——亲测超级好用

今天给大家分享下我最近使用的学习方法&#xff0c;真的非常好用&#xff01;大家用起来&#xff01; 在日常的学习和工作中&#xff0c;我们经常会遇到一些难以克服的问题&#xff1a;分心、效率低下、焦虑等。为了帮助人们更好地学习和工作&#xff0c;一些学习方法和工具应运…...

ES6从入门到精通:前言

ES6简介 ES6&#xff08;ECMAScript 2015&#xff09;是JavaScript语言的重大更新&#xff0c;引入了许多新特性&#xff0c;包括语法糖、新数据类型、模块化支持等&#xff0c;显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var&#xf…...

抖音增长新引擎:品融电商,一站式全案代运营领跑者

抖音增长新引擎&#xff1a;品融电商&#xff0c;一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中&#xff0c;品牌如何破浪前行&#xff1f;自建团队成本高、效果难控&#xff1b;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...

工程地质软件市场:发展现状、趋势与策略建议

一、引言 在工程建设领域&#xff0c;准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具&#xff0c;正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...

反射获取方法和属性

Java反射获取方法 在Java中&#xff0c;反射&#xff08;Reflection&#xff09;是一种强大的机制&#xff0c;允许程序在运行时访问和操作类的内部属性和方法。通过反射&#xff0c;可以动态地创建对象、调用方法、改变属性值&#xff0c;这在很多Java框架中如Spring和Hiberna…...

智能仓储的未来:自动化、AI与数据分析如何重塑物流中心

当仓库学会“思考”&#xff0c;物流的终极形态正在诞生 想象这样的场景&#xff1a; 凌晨3点&#xff0c;某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径&#xff1b;AI视觉系统在0.1秒内扫描包裹信息&#xff1b;数字孪生平台正模拟次日峰值流量压力…...

Python基于历史模拟方法实现投资组合风险管理的VaR与ES模型项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档&#xff09;&#xff0c;如需数据代码文档可以直接到文章最后关注获取。 1.项目背景 在金融市场日益复杂和波动加剧的背景下&#xff0c;风险管理成为金融机构和个人投资者关注的核心议题之一。VaR&…...

人工智能(大型语言模型 LLMs)对不同学科的影响以及由此产生的新学习方式

今天是关于AI如何在教学中增强学生的学习体验&#xff0c;我把重要信息标红了。人文学科的价值被低估了 ⬇️ 转型与必要性 人工智能正在深刻地改变教育&#xff0c;这并非炒作&#xff0c;而是已经发生的巨大变革。教育机构和教育者不能忽视它&#xff0c;试图简单地禁止学生使…...

【笔记】WSL 中 Rust 安装与测试完整记录

#工作记录 WSL 中 Rust 安装与测试完整记录 1. 运行环境 系统&#xff1a;Ubuntu 24.04 LTS (WSL2)架构&#xff1a;x86_64 (GNU/Linux)Rust 版本&#xff1a;rustc 1.87.0 (2025-05-09)Cargo 版本&#xff1a;cargo 1.87.0 (2025-05-06) 2. 安装 Rust 2.1 使用 Rust 官方安…...

提升移动端网页调试效率:WebDebugX 与常见工具组合实践

在日常移动端开发中&#xff0c;网页调试始终是一个高频但又极具挑战的环节。尤其在面对 iOS 与 Android 的混合技术栈、各种设备差异化行为时&#xff0c;开发者迫切需要一套高效、可靠且跨平台的调试方案。过去&#xff0c;我们或多或少使用过 Chrome DevTools、Remote Debug…...

协议转换利器,profinet转ethercat网关的两大派系,各有千秋

随着工业以太网的发展&#xff0c;其高效、便捷、协议开放、易于冗余等诸多优点&#xff0c;被越来越多的工业现场所采用。西门子SIMATIC S7-1200/1500系列PLC集成有Profinet接口&#xff0c;具有实时性、开放性&#xff0c;使用TCP/IP和IT标准&#xff0c;符合基于工业以太网的…...