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

字符串学习篇-java

API:应用程序编程接口。

ctrl+alt+v,自动生成一个变量接收数据

字符串:

注意点

创建string对象两种方式

1.直接赋值

2.构造器来创建

详情看黑马JAVA入门学习笔记7-CSDN博客

常用方法:比较

引用数据类型,比较的是地址值。

boolean equals 要求完全一致

boolean equalslgnoreCase 忽略大小写

遍历字符串:

public char charAt(int index)根据索引返回字符

public int length()返回字符串长度

char类型在进行计算的时候,会自动类型提升为int,查询ascii码

案例:

//键盘录入字符串,统计大写字母小写字母数字的个数
public class studentTest {public static void main(String[] args) {Scanner sc=new Scanner(System.in);String str=sc.next();int smallcount=0;int bigcount=0;int numcount=0;for (int i = 0; i <str.length() ; i++) {char c=str.charAt(i);if(c>='a'&&c<='z')smallcount++;else if(c>='A'&&c<='Z')bigcount++;else if(c>='0'&&c<='9')numcount++;}System.out.println("小写字母:"+smallcount);System.out.println("大写字母:"+bigcount);System.out.println("数字:"+numcount);}}

案例:拼接字符串:

//输入一个数组,将数组拼接成字符串
public class studentTest {public static void main(String[] args) {int[] arr={1,2,3};String result=arrToString(arr);System.out.println(result);}public static String arrToString(int[] arr){if(arr==null)return "";else if(arr.length==0)return "[]";else{String res="[";for (int i = 0; i <arr.length ; i++) {if(i==arr.length-1)res+=arr[i];elseres+=arr[i]+",";}res+="]";return res;}}}

 字符串反转

fori从0for循环,forr逆着for循环

//定义一个方法,实现字符串反转
public class studentTest {public static void main(String[] args) {String result=reverse("abc");System.out.println(result);}public static String reverse(String s){String res="";for (int i = s.length()-1; i >=0 ; i--) {char c=s.charAt(i);res+=c;}return res;}}

案例:金额转换

数字变成大写中文,查表法,跟数组一一对应

//金额转换限制在七位
public class studentTest {public static void main(String[] args) {Scanner sc=new Scanner(System.in);int money=0;String res="";//转化成大写字母的数字while(true){System.out.println("输入一个金额");money=sc.nextInt();if(money>=0&&money<=9999999){while(true){int a=money%10;String s=changeTocapital(a);res=s+res;money=money/10;if(money==0){break;}}break;}else{System.out.println("金额不对");}}int count=7-res.length();String res1="";for (int i = 0; i <count ; i++) {res1+="零";}res1+=res;String[] arr1={"佰","拾","万","仟","佰","拾","元"};String result="";for (int i = 0; i <res1.length() ; i++) {char c=res1.charAt(i);result=result+c+arr1[i];}System.out.println(result);}//定义一个方法,把数字转换成大写汉字public static String changeTocapital(int num){String[] arr={"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};String s=arr[num];return s;}}

案例:手机号屏蔽

string substring(int beginIndex,int endIndex)截取   包头不包尾,包左不包右。只有返回值才是截取的小串。

string substring(int beginIndex)截取到末尾

//屏蔽手机号
public class studentTest {public static void main(String[] args) {String Telenumber="13112340596";String start=Telenumber.substring(0,3);String end=Telenumber.substring(7);String result=start+"****"+end;System.out.println(result);}}

案例 身份信息查看

1、2位:省份;3、4位:城市;56:区县;7-14:出生年月日;1516:所在地派出所;17:性别;18:个人信息码,随机。

//身份证查看
public class studentTest {public static void main(String[] args) {String id="312168202404051129";String year=id.substring(6,10);String month=id.substring(10,12);String day=id.substring(12,14);System.out.println("出生日期是:"+year+"年"+month+"月"+day+"日");char gender=id.charAt(16);//System.out.println('0'+0);//48int g=gender-48;if(g%2==0){System.out.println("性别是女");}else{System.out.println("男");}}}

案例:敏感词替换

string replace(旧值,新值)替换,需要返回值


//敏感词替换
public class studentTest {public static void main(String[] args) {String talk="你玩的真好,tmd,sb";String[] arr={"tmd","sb","cnm","sc"};//敏感词库for (int i = 0; i <arr.length ; i++) {talk=talk.replace(arr[i],"***");}System.out.println(talk);}}
//你玩的真好,***,***

stringBuilder

可以看做容器,创建之后里面内容可变,提高字符串操作效率

 构造: public StringBuilder()创建空白的对象。public StringBuilder(string str)里面是有对象

常用方法: append(任意类型)添加数据,reverse()反转容器内容;length()返回长度;                          tostring()转换成字符串

使用场景:字符串拼接,字符串反转

//stringbuilder
public class studentTest {public static void main(String[] args) {StringBuilder sb=new StringBuilder();sb.append(2.3);sb.append(4);sb.append(true);System.out.println(sb);//打印的是属性值,而不是地址值。sb.reverse();System.out.println(sb);int len=sb.length();System.out.println(len);String str=sb.toString();System.out.println(str);}}

链式 编程

定义一个键盘录入字符串的方法getstring()

在main函数里面写int len=getstring().replace("a","q").substring(1).length()

stringbuilder:sb.append("aaa").append("bbb").append("ccc");

//判断键盘录入字符串是不是对称的,链式编程
public class studentTest {public static void main(String[] args) {Scanner sc=new Scanner(System.in);System.out.println("输入一个字符串");String str=sc.next();String s=new StringBuilder(str).reverse().toString();if(s.equals(str)){System.out.println("是对称的");}else{System.out.println("不是对称的");}}}

案例 拼接字符串

//拼接字符串
public class studentTest {public static void main(String[] args) {int[] arr={1,2,3};String res=arrToString(arr);System.out.println(res);}public static String arrToString(int[] arr){StringBuilder sb=new StringBuilder("[");for (int i = 0; i <arr.length ; i++) {if(i==arr.length-1){sb.append(arr[i]).append("]");}else{sb.append(arr[i]).append(",");}}String s=sb.toString();return s;}}

stringJoiner

可以看做是容器,创建之后里面的内容可变。提高字符串效率,代码编写简洁。

构造方法:public StringJoiner(间隔符号)  ; public StringJoiner(间隔符号,开始符号,结束符号)

成员方法: add()  length ; tostring

//stringJoiner
public class studentTest {public static void main(String[] args) {StringJoiner sj=new StringJoiner(", ","[","]");sj.add("aaa").add("bbb").add("ccc");System.out.println(sj);int len=sj.length();System.out.println(len);String s=sj.toString();System.out.println(s);}
//[aaa, bbb, ccc]
//15
//[aaa, bbb, ccc]}

s tringbuilder:默认容量16,不够扩容16*2+2,还不够,则以实际长度创建容量。

案例:

//键盘录入一个字符串,长度小于等于9,必须是数字,输出为罗马数字
public class studentTest {public static void main(String[] args) {Scanner sc=new Scanner(System.in);String str="";while (true) {System.out.println("输入一个字符串");str=sc.next();boolean flag=checkStr(str);if(flag){break;}else{System.out.println("重新输入");}}StringBuilder sb=new StringBuilder();for (int i = 0; i <str.length() ; i++) {char c=str.charAt(i);sb.append(changeToLuoma(c-48));}System.out.println(sb);}public static boolean checkStr(String str){if(str.length()>9){return false;}for (int i = 0; i <str.length() ; i++) {char c=str.charAt(i);if(c<'0'||c>'9'){return false;}}return true;}public static String changeToLuoma(int index){String[] luoma={"","I","II","III","IV","V","VI","VII","VIII","IX"};return luoma[index];}}

另一种方法:使用switch

//键盘录入一个字符串,长度小于等于9,必须是数字,输出为罗马数字
public class studentTest {public static void main(String[] args) {Scanner sc=new Scanner(System.in);String str="";while (true) {System.out.println("输入一个字符串");str=sc.next();boolean flag=checkStr(str);if(flag){break;}else{System.out.println("重新输入");}}StringBuilder sb=new StringBuilder();for (int i = 0; i <str.length() ; i++) {char c=str.charAt(i);sb.append(changeToLuoma(c));}System.out.println(sb);}public static boolean checkStr(String str){if(str.length()>9){return false;}for (int i = 0; i <str.length() ; i++) {char c=str.charAt(i);if(c<'0'||c>'9'){return false;}}return true;}public static String changeToLuoma(char number){String str;switch(number){case '0':str="";break;case '1':str="I";break;case '2':str="II";break;case '3':str="III";break;case '4':str="IV";break;case '5':str="V";break;case '6':str="VI";break;case '7':str="VII";break;case '8':str="VIII";break;case '9':str="IX";break;default:str="";break;}return str;}}

案例:旋转字符串

修改字符串,两个方法:用substring截取,拼接。把字符串先变成字符数组,调整里面的数据,然后变成字符串。

//定义两个字符串,旋转字符串a,若干次之后是否和b一样,旋转是将第一个字符放在最后一位
public class studentTest {public static void main(String[] args) {String str1="abcde";String str2="cdeab";boolean res=check(str1,str2);System.out.println(res);}//旋转方法 使用substringpublic static String rotate(String str){char first=str.charAt(0);String end =str.substring(1);String res=end+first;return res;}//判断方法,旋转若干次,是不是一样两个字符串public static boolean check(String str1,String str2){for (int i = 0; i <str1.length() ; i++) {str1=rotate(str1);if(str1.equals(str2)){return true;}}return false;}}

转为字符数组 tochararray 

//定义两个字符串,旋转字符串a,若干次之后是否和b一样,旋转是将第一个字符放在最后一位
public class studentTest {public static void main(String[] args) {String str1="abcde";String str2="cdeab";boolean res=check(str1,str2);System.out.println(res);}//旋转方法  先转换为字符数组,public static String rotate(String str){char[] newarr=str.toCharArray();char c=newarr[0];for (int i = 1; i <newarr.length ; i++) {newarr[i-1]=newarr[i];}newarr[newarr.length-1]=c;String result=new String(newarr);return result;}//判断方法,旋转若干次,是不是一样两个字符串public static boolean check(String str1,String str2){for (int i = 0; i <str1.length() ; i++) {str1=rotate(str1);if(str1.equals(str2)){return true;}}return false;}}

案例:打乱字符串

//键盘输入任意字符串,打乱顺序输出
public class studentTest {public static void main(String[] args) {Scanner sc=new Scanner(System.in);System.out.println("输入一个任意字符串");String str= sc.next();char[] arr=str.toCharArray();Random r=new Random();for (int i = 0; i <arr.length ; i++) {int index=r.nextInt(arr.length);char temp=arr[i];arr[i]=arr[index];arr[index]=temp;}String res=new String(arr);System.out.println(res);}}

案例:产生验证码,五位,一位数字

//生成验证码 四位字母一位数字
public class studentTest {public static void main(String[] args) {String data="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";Random r=new Random();String str="";for (int i = 0; i <4 ; i++) {int index=r.nextInt(data.length());str+=data.charAt(index);}str+=r.nextInt(10);int num=r.nextInt(5);char[] arr=str.toCharArray();char temp=arr[4];arr[4]=arr[num];arr[num]=temp;String res=new String(arr);System.out.println(res);}}

案例 两个字符串形式的数相乘,结果还是字符串

//给定两个字符串形式非负整数,求他们相乘之后的值,乘积也用字符串表示
public class studentTest {public static void main(String[] args) {String str1="123456";String str2="5221";int num1=stringToInt(str1);int num2=stringToInt(str2);int res= num1*num2;String result="";result+=res;System.out.println(result);}public static int stringToInt(String str){int num=0;for (int i = 0; i <str.length()-1 ; i++) {char c= str.charAt(i);num+=(c-48);num=num*10;}num+=str.charAt(str.length()-1)-48;return num;}}

案例 求最后一个单词长度

//给你一个字符串,由若干单词组成,单词之间是空格隔开,求最后一个单词的长度
public class studentTest {public static void main(String[] args) {String s="hello i am a girl";int count=0;for (int i = s.length()-1; i >=0 ; i--) {if(s.charAt(i)!=' '){count++;}elsebreak;}System.out.println(count);}}

相关文章:

字符串学习篇-java

API&#xff1a;应用程序编程接口。 ctrlaltv,自动生成一个变量接收数据 字符串&#xff1a; 注意点 创建string对象两种方式 1.直接赋值 2.构造器来创建 详情看黑马JAVA入门学习笔记7-CSDN博客 常用方法&#xff1a;比较 引用数据类型&#xff0c;比较的是地址值。 b…...

2024亚太杯数学建模C题【Development Analyses and Strategies for Pet Industry 】思路详解

C&#xff1a;宠物行业及相关产业的发展分析与战略 随着人们消费观念的发展&#xff0c;宠物行业作为一个新兴产业&#xff0c;正在全球范围内逐渐积聚势头&#xff0c;这得益于快速的经济发展和人均收入的提高。1992年&#xff0c;中国小动物保护协会成立&#xff0c;随后1993…...

STM32串口——5个串口的使用方法

参考文档 STM32串口——5个串口的使用方法_51CTO博客_stm32串口通信的接收与发送 串口是我们常用的一个数据传输接口&#xff0c;STM32F103系列单片机共有5个串口&#xff0c;其中1-3是通用同步/异步串行接口USART(Universal Synchronous/Asynchronous Receiver/Transmitter)…...

NVR接入录像回放平台EasyCVR视频融合平台加油站监控应用场景与实际功能

在现代社会中&#xff0c;加油站作为重要的能源供应点&#xff0c;面临着安全监管与风险管理的双重挑战。为应对这些问题&#xff0c;安防监控平台EasyCVR推出了一套全面的加油站监控方案。该方案结合了智能分析网关V4的先进识别技术和EasyCVR视频监控平台的强大监控功能&#…...

Ubuntu24.04安装gpfs客户端

文章目录 Ubuntu24.04安装gpfs客户端拷贝软件包在客户端执行命令&#xff0c;提取产品包进入安装包目录&#xff0c;安装相关产品包编译。编译过程中会检查系统依赖接入集群&#xff08;后续&#xff09; Ubuntu24.04安装gpfs客户端 拷贝软件包 scp /root/Spectrum_Scale_Dat…...

Android Framework层介绍

文章目录 前言一、Android Framework 层概述二、主要组件1. 应用程序接口&#xff08;API&#xff09;2. 系统服务3. Binder4. 资源管理5. Content Provider6. 广播接收器&#xff08;BroadcastReceiver&#xff09;7. 服务&#xff08;Service&#xff09; 三、与 Linux Kerne…...

如何利用 Puppeteer 的 Evaluate 函数操作网页数据

介绍 在现代的爬虫技术中&#xff0c;Puppeteer 因其强大的功能和灵活性而备受青睐。Puppeteer 是一个用于控制 Chromium 或 Chrome 浏览器的 Node.js 库&#xff0c;提供了丰富的 API 接口&#xff0c;能够帮助开发者高效地处理动态网页数据。本文将重点讲解 Puppeteer 的 ev…...

SpringMVC接收请求参数

&#xff08;5&#xff09;请求参数》五种普通参数 1.普通参数 代码块 RequestMapping("/commonParam") ResponseBody public String commonParam(String name,int age){System.out.println("普通参数传递 name > "name);System.out.println("普通…...

安宝特方案 | AR助力紧急救援,科技守卫生命每一刻!

在生死时速的紧急救援战场上&#xff0c;每一秒都至关重要&#xff01;随着科技的发展&#xff0c;增强现实&#xff08;AR&#xff09;技术正在逐步渗透到医疗健康领域&#xff0c;改变着传统的医疗服务模式。 安宝特AR远程协助解决方案&#xff0c;凭借其先进的技术支持和创新…...

蓝桥杯每日真题 - 第18天

题目&#xff1a;&#xff08;出差&#xff09; 题目描述&#xff08;13届 C&C B组E题&#xff09; 解题思路&#xff1a; 问题分析 问题实质是一个带权图的最短路径问题&#xff0c;但路径的权重包含两个部分&#xff1a; 从当前城市到下一个城市的路程时间。 当前城市的…...

HTTP 协议应用场景

一、HTTP 协议简介 HTTP&#xff08;Hypertext Transfer Protocol&#xff09;即超文本传输协议&#xff0c;是用于分布式、协作式和超媒体信息系统的应用层协议&#xff0c;是互联网数据通信的基础。它采用客户端 - 服务器&#xff08;Client-Server&#xff09;的通信模式&am…...

【Linux庖丁解牛】—Linux基本指令(下)!

目录 1、grep指令 2、zip/unzip指令 3、sz/rz指令 4、tar指令 ​编辑 5、scp指令 6、bc指令 7、uname –r指令 8、重要的几个热键 9、关机 10、完结撒花 1、grep指令 grep是文本过滤器&#xff0c;其作用是在指定的文件中过滤出包含你指定字符串的内容&#xff0c;…...

python: generator model using sql server 2019

設計或生成好數據庫&#xff0c;可以生成自己設計好的框架項目 # encoding: utf-8 # 版权所有 &#xff1a;2024 ©涂聚文有限公司 # 许可信息查看 &#xff1a;言語成了邀功盡責的功臣&#xff0c;還需要行爲每日來值班嗎 # 描述&#xff1a; : 生成实体 # Author …...

Kafka怎么发送JAVA对象并在消费者端解析出JAVA对象--示例

1、在pom.xml中加入依赖 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-stream-kafka</artifactId><version>3.1.6</version></dependency> 2、配置application.yml 加入Kafk…...

深度学习(1)

一、torch的安装 基于直接设备情况&#xff0c;选择合适的torch版本&#xff0c;有显卡的建议安装GPU版本&#xff0c;可以通过nvidia-smi命令来查看显卡驱动的版本&#xff0c;在官网中根据cuda版本&#xff0c;选择合适的版本号&#xff0c;下面是安装示例代码 GPU&#xff…...

golang 嵌入式armv7l压缩编译打包

编译 Go 应用程序 go build -ldflags"-s -w" -o myapp.exe . 使用 UPX 压缩可执行文件&#xff08;window下载并设置环境变量&#xff09; upx --best --lzma myapp.exe 可从10M压缩到1M 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 …...

Makefile 之 join

join $(join <list1>,<list2> ) 名称&#xff1a;连接函数——join。 功能&#xff1a;把<list2>中的单词对应地加到<list1>的单词后面。如果<list1>的单词个数要比<list2>的多&#xff0c; 那么&#xff0c;<list1>中的多出…...

集合卡尔曼滤波(Ensemble Kalman Filter),用于二维滤波(模拟平面上的目标跟踪),MATLAB代码

集合卡尔曼滤波&#xff08;Ensemble Kalman Filter&#xff09; 文章目录 引言理论基础卡尔曼滤波集合卡尔曼滤波初始化预测步骤更新步骤卡尔曼增益更新集合 MATLAB 实现运行结果3. 应用领域结论 引言 集合卡尔曼滤波&#xff08;Ensemble Kalman Filter, EnKF&#xff09;是…...

北京申请中级职称流程(2024年)

想找个完整详细点的申请流程资料真不容易&#xff0c;做个分享送给需要的人吧。 不清楚为什么说文章过度宣传&#xff0c;把链接和页面去掉了&#xff0c;网上自己找一下。 最好用windows自带的EDGE浏览器打开申请网站&#xff0c;只有在开始申请的时间内才可以进行网上申报&…...

ubuntu.24安装cuda

1.下载CUDA Toolkit https://developer.nvidia.com/cuda-toolkit-archive 2.按照命令下载&#xff0c;安装 sudo sh cuda_12.2.2_535.104.05_linux.run 3.环境变量 sudo vi /etc/profile 最后面添加 export PATH“/usr/local/cuda-12.2/bin: P A T H " e x p o r t L D L…...

JavaSec-RCE

简介 RCE(Remote Code Execution)&#xff0c;可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景&#xff1a;Groovy代码注入 Groovy是一种基于JVM的动态语言&#xff0c;语法简洁&#xff0c;支持闭包、动态类型和Java互操作性&#xff0c…...

(二)TensorRT-LLM | 模型导出(v0.20.0rc3)

0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述&#xff0c;后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作&#xff0c;其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...

[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?

论文网址&#xff1a;pdf 英文是纯手打的&#xff01;论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误&#xff0c;若有发现欢迎评论指正&#xff01;文章偏向于笔记&#xff0c;谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...

R语言速释制剂QBD解决方案之三

本文是《Quality by Design for ANDAs: An Example for Immediate-Release Dosage Forms》第一个处方的R语言解决方案。 第一个处方研究评估原料药粒径分布、MCC/Lactose比例、崩解剂用量对制剂CQAs的影响。 第二处方研究用于理解颗粒外加硬脂酸镁和滑石粉对片剂质量和可生产…...

为什么要创建 Vue 实例

核心原因:Vue 需要一个「控制中心」来驱动整个应用 你可以把 Vue 实例想象成你应用的**「大脑」或「引擎」。它负责协调模板、数据、逻辑和行为,将它们变成一个活的、可交互的应用**。没有这个实例,你的代码只是一堆静态的 HTML、JavaScript 变量和函数,无法「活」起来。 …...

xmind转换为markdown

文章目录 解锁思维导图新姿势&#xff1a;将XMind转为结构化Markdown 一、认识Xmind结构二、核心转换流程详解1.解压XMind文件&#xff08;ZIP处理&#xff09;2.解析JSON数据结构3&#xff1a;递归转换树形结构4&#xff1a;Markdown层级生成逻辑 三、完整代码 解锁思维导图新…...

聚六亚甲基单胍盐酸盐市场深度解析:现状、挑战与机遇

根据 QYResearch 发布的市场报告显示&#xff0c;全球市场规模预计在 2031 年达到 9848 万美元&#xff0c;2025 - 2031 年期间年复合增长率&#xff08;CAGR&#xff09;为 3.7%。在竞争格局上&#xff0c;市场集中度较高&#xff0c;2024 年全球前十强厂商占据约 74.0% 的市场…...

用 Rust 重写 Linux 内核模块实战:迈向安全内核的新篇章

用 Rust 重写 Linux 内核模块实战&#xff1a;迈向安全内核的新篇章 ​​摘要&#xff1a;​​ 操作系统内核的安全性、稳定性至关重要。传统 Linux 内核模块开发长期依赖于 C 语言&#xff0c;受限于 C 语言本身的内存安全和并发安全问题&#xff0c;开发复杂模块极易引入难以…...

Java并发编程实战 Day 11:并发设计模式

【Java并发编程实战 Day 11】并发设计模式 开篇 这是"Java并发编程实战"系列的第11天&#xff0c;今天我们聚焦于并发设计模式。并发设计模式是解决多线程环境下常见问题的经典解决方案&#xff0c;它们不仅提供了优雅的设计思路&#xff0c;还能显著提升系统的性能…...

ubuntu中安装conda的后遗症

缘由: 在编译rk3588的sdk时&#xff0c;遇到编译buildroot失败&#xff0c;提示如下&#xff1a; 提示缺失expect&#xff0c;但是实测相关工具是在的&#xff0c;如下显示&#xff1a; 然后查找借助各个ai工具&#xff0c;重新安装相关的工具&#xff0c;依然无解。 解决&am…...