当前位置: 首页 > 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…...

FFmpeg 低延迟同屏方案

引言 在实时互动需求激增的当下&#xff0c;无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作&#xff0c;还是游戏直播的画面实时传输&#xff0c;低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架&#xff0c;凭借其灵活的编解码、数据…...

高频面试之3Zookeeper

高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个&#xff1f;3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制&#xff08;过半机制&#xff0…...

c++ 面试题(1)-----深度优先搜索(DFS)实现

操作系统&#xff1a;ubuntu22.04 IDE:Visual Studio Code 编程语言&#xff1a;C11 题目描述 地上有一个 m 行 n 列的方格&#xff0c;从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子&#xff0c;但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...

反射获取方法和属性

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

【C语言练习】080. 使用C语言实现简单的数据库操作

080. 使用C语言实现简单的数据库操作 080. 使用C语言实现简单的数据库操作使用原生APIODBC接口第三方库ORM框架文件模拟1. 安装SQLite2. 示例代码:使用SQLite创建数据库、表和插入数据3. 编译和运行4. 示例运行输出:5. 注意事项6. 总结080. 使用C语言实现简单的数据库操作 在…...

拉力测试cuda pytorch 把 4070显卡拉满

import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试&#xff0c;通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小&#xff0c;增大可提高计算复杂度duration: 测试持续时间&#xff08;秒&…...

成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战

在现代战争中&#xff0c;电磁频谱已成为继陆、海、空、天之后的 “第五维战场”&#xff0c;雷达作为电磁频谱领域的关键装备&#xff0c;其干扰与抗干扰能力的较量&#xff0c;直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器&#xff0c;凭借数字射…...

.Net Framework 4/C# 关键字(非常用,持续更新...)

一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...

使用Spring AI和MCP协议构建图片搜索服务

目录 使用Spring AI和MCP协议构建图片搜索服务 引言 技术栈概览 项目架构设计 架构图 服务端开发 1. 创建Spring Boot项目 2. 实现图片搜索工具 3. 配置传输模式 Stdio模式&#xff08;本地调用&#xff09; SSE模式&#xff08;远程调用&#xff09; 4. 注册工具提…...

深入理解Optional:处理空指针异常

1. 使用Optional处理可能为空的集合 在Java开发中&#xff0c;集合判空是一个常见但容易出错的场景。传统方式虽然可行&#xff0c;但存在一些潜在问题&#xff1a; // 传统判空方式 if (!CollectionUtils.isEmpty(userInfoList)) {for (UserInfo userInfo : userInfoList) {…...