字符串学习篇-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:应用程序编程接口。 ctrlaltv,自动生成一个变量接收数据 字符串: 注意点 创建string对象两种方式 1.直接赋值 2.构造器来创建 详情看黑马JAVA入门学习笔记7-CSDN博客 常用方法:比较 引用数据类型,比较的是地址值。 b…...
2024亚太杯数学建模C题【Development Analyses and Strategies for Pet Industry 】思路详解
C:宠物行业及相关产业的发展分析与战略 随着人们消费观念的发展,宠物行业作为一个新兴产业,正在全球范围内逐渐积聚势头,这得益于快速的经济发展和人均收入的提高。1992年,中国小动物保护协会成立,随后1993…...
STM32串口——5个串口的使用方法
参考文档 STM32串口——5个串口的使用方法_51CTO博客_stm32串口通信的接收与发送 串口是我们常用的一个数据传输接口,STM32F103系列单片机共有5个串口,其中1-3是通用同步/异步串行接口USART(Universal Synchronous/Asynchronous Receiver/Transmitter)…...
NVR接入录像回放平台EasyCVR视频融合平台加油站监控应用场景与实际功能
在现代社会中,加油站作为重要的能源供应点,面临着安全监管与风险管理的双重挑战。为应对这些问题,安防监控平台EasyCVR推出了一套全面的加油站监控方案。该方案结合了智能分析网关V4的先进识别技术和EasyCVR视频监控平台的强大监控功能&#…...
Ubuntu24.04安装gpfs客户端
文章目录 Ubuntu24.04安装gpfs客户端拷贝软件包在客户端执行命令,提取产品包进入安装包目录,安装相关产品包编译。编译过程中会检查系统依赖接入集群(后续) Ubuntu24.04安装gpfs客户端 拷贝软件包 scp /root/Spectrum_Scale_Dat…...
Android Framework层介绍
文章目录 前言一、Android Framework 层概述二、主要组件1. 应用程序接口(API)2. 系统服务3. Binder4. 资源管理5. Content Provider6. 广播接收器(BroadcastReceiver)7. 服务(Service) 三、与 Linux Kerne…...
如何利用 Puppeteer 的 Evaluate 函数操作网页数据
介绍 在现代的爬虫技术中,Puppeteer 因其强大的功能和灵活性而备受青睐。Puppeteer 是一个用于控制 Chromium 或 Chrome 浏览器的 Node.js 库,提供了丰富的 API 接口,能够帮助开发者高效地处理动态网页数据。本文将重点讲解 Puppeteer 的 ev…...
SpringMVC接收请求参数
(5)请求参数》五种普通参数 1.普通参数 代码块 RequestMapping("/commonParam") ResponseBody public String commonParam(String name,int age){System.out.println("普通参数传递 name > "name);System.out.println("普通…...
安宝特方案 | AR助力紧急救援,科技守卫生命每一刻!
在生死时速的紧急救援战场上,每一秒都至关重要!随着科技的发展,增强现实(AR)技术正在逐步渗透到医疗健康领域,改变着传统的医疗服务模式。 安宝特AR远程协助解决方案,凭借其先进的技术支持和创新…...
蓝桥杯每日真题 - 第18天
题目:(出差) 题目描述(13届 C&C B组E题) 解题思路: 问题分析 问题实质是一个带权图的最短路径问题,但路径的权重包含两个部分: 从当前城市到下一个城市的路程时间。 当前城市的…...
HTTP 协议应用场景
一、HTTP 协议简介 HTTP(Hypertext Transfer Protocol)即超文本传输协议,是用于分布式、协作式和超媒体信息系统的应用层协议,是互联网数据通信的基础。它采用客户端 - 服务器(Client-Server)的通信模式&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是文本过滤器,其作用是在指定的文件中过滤出包含你指定字符串的内容,…...
python: generator model using sql server 2019
設計或生成好數據庫,可以生成自己設計好的框架項目 # encoding: utf-8 # 版权所有 :2024 ©涂聚文有限公司 # 许可信息查看 :言語成了邀功盡責的功臣,還需要行爲每日來值班嗎 # 描述: : 生成实体 # 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的安装 基于直接设备情况,选择合适的torch版本,有显卡的建议安装GPU版本,可以通过nvidia-smi命令来查看显卡驱动的版本,在官网中根据cuda版本,选择合适的版本号,下面是安装示例代码 GPUÿ…...
golang 嵌入式armv7l压缩编译打包
编译 Go 应用程序 go build -ldflags"-s -w" -o myapp.exe . 使用 UPX 压缩可执行文件(window下载并设置环境变量) 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> ) 名称:连接函数——join。 功能:把<list2>中的单词对应地加到<list1>的单词后面。如果<list1>的单词个数要比<list2>的多, 那么,<list1>中的多出…...
集合卡尔曼滤波(Ensemble Kalman Filter),用于二维滤波(模拟平面上的目标跟踪),MATLAB代码
集合卡尔曼滤波(Ensemble Kalman Filter) 文章目录 引言理论基础卡尔曼滤波集合卡尔曼滤波初始化预测步骤更新步骤卡尔曼增益更新集合 MATLAB 实现运行结果3. 应用领域结论 引言 集合卡尔曼滤波(Ensemble Kalman Filter, EnKF)是…...
北京申请中级职称流程(2024年)
想找个完整详细点的申请流程资料真不容易,做个分享送给需要的人吧。 不清楚为什么说文章过度宣传,把链接和页面去掉了,网上自己找一下。 最好用windows自带的EDGE浏览器打开申请网站,只有在开始申请的时间内才可以进行网上申报&…...
ubuntu.24安装cuda
1.下载CUDA Toolkit https://developer.nvidia.com/cuda-toolkit-archive 2.按照命令下载,安装 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…...
unity li2cpp逆向原理是什么?
主要涉及将Unity游戏引擎中的C#代码转换为C代码,并进一步编译为各平台的原生(Native)代码的过程,以及逆向工程工具如何利用这一过程中的特定文件来还原和分析原始代码。以下是对Unity IL2CPP逆向原理的详细解释: 对惹…...
Python网络爬虫实践案例:爬取猫眼电影Top100
以下是一个Python网络爬虫的实践案例,该案例将演示如何使用Python爬取猫眼电影Top100的电影名称、主演和上映时间等信息,并将这些信息保存到TXT文件中。此案例使用了requests库来发送HTTP请求,使用re库进行正则表达式匹配,并包含详…...
卷积神经网络(CNN)中的权重(weights)和偏置项(bias)
在卷积神经网络(CNN)中,权重(weights)和偏置项(bias)是两个至关重要的参数,它们在网络的学习和推断过程中起着关键作用。 一、权重(Weights) 1. 定义…...
华为FusionCube 500-8.2.0SPC100 实施部署文档
环境: 产品:FusionCube 500版本:8.2.0.SPC100场景:虚拟化基础设施平台:FusionCompute两节点 MCNA * 2硬件部署(塔式交付场景)免交换组网(配置AR卡) 前置准备 组网规划 节…...
Android 网络请求(二)OKHttp网络通信
学习笔记 OkHttp 是一个非常强大且流行的 HTTP 客户端库,广泛用于 Android 开发中进行网络请求。与 HttpURLConnection 相比,OkHttp 提供了更简单、更高效的 API,特别是在处理复杂的 HTTP 请求时。 如何使用 OkHttp 进行网络请求 以下是使…...
npm上传自己封装的插件(vue+vite)
一、npm账号及发包删包等命令 若没有账号,可在npm官网:https://www.npmjs.com/login 进行注册。 在当前项目根目录下打开终端命令窗口,常见命令如下: 1、登录命令:npm login(不用每次都重新登录࿰…...
如何在Word文件中设置水印以及如何禁止修改水印
在日常办公和学习中,我们经常需要在Word文档中设置水印,以保护文件的版权或标明文件的机密性。水印可以是文字形式,也可以是图片形式,能够灵活地适应不同的需求。但仅仅设置水印是不够的,有时我们还需要确保水印不被随…...
.NET桌面应用架构Demo与实战|WPF+MVVM+EFCore+IOC+DI+Code First+AutoMapper
目录 .NET桌面应用架构Demo与实战|WPFMVVMEFCoreIOCDICode FirstAutoPapper技术栈简述项目地址:功能展示项目结构项目引用1. 新建模型2. Data层,依赖EF Core,实现数据库增删改查3. Bussiness层,实现具体的业务逻辑4. Service层&am…...
el-table根据指定字段合并行和列+根据屏幕高度实时设置el-table的高度
文章目录 html代码script代码arraySpanMethod.js代码 html代码 <template><div class"rightBar"><cl-table ref"tableData"border :span-method"arraySpanMethod" :data"tableData" :columns"columns":max-…...
图像处理 之 凸包和最小外围轮廓生成
“ 最小包围轮廓之美” 一起来欣赏图形之美~ 1.原始图片 男人牵着机器狗 2.轮廓提取 轮廓提取 3.最小包围轮廓 最小包围轮廓 4.凸包 凸包 5.凸包和最小包围轮廓的合照 凸包和最小包围轮廓的合照 上述图片中凸包、最小外围轮廓效果为作者实现算法生成。 图形几何之美系列&#…...
网站建设哪个部门管理/合肥网络公司
前言 在传统的交换机中,一台交换机的整机属于同一个广播域,随着网络规模扩大,交换机数量越来越多,网络中的网源数量越来越多,交换机的广播域势必会越来越大,这种情况下,内网中一旦出现广播风暴之…...
引航博景网站做的很好吗/深圳华强北新闻最新消息今天
当把一台服务器(包括Web服务器、FTP服务器或者流媒体服务器等等)放入网络中之后,随着客户端数量的不断增加,人们往往需要功能更强大、处理速度更快的服务器。为了解决这个问题,如果将原有的服务器替换成功能更强大、处理速度更快的服务器显然…...
网站蜘蛛爬行记录/ip子域名大全
原文地址:https://www.web-tinker.com/article/21291.html 说起 ES6 的继承和 super 的用法大家都不会陌生,可是一问到 super 到底是什么,很多人就支支吾吾。也许在别的编程语言中 super 和 this 一样,都是一个指针,可…...
网站公安备案电话/一个新手怎么做推广
https://github.com/scheckley/matlab-monokai将以下内容添加到matlab的matlab.prf文件中,文件路径为在matlab中运行prefdir的结果Editor.VariableHighlighting.ColorC-6931898 ColorsTextC-460558 Colors_M_SystemCommandsC-448910 Editorhighlight-linesC-1197459…...
wordpress怎么使用固定连接/河北seo基础知识
非关系型数据库(json数据库) npm install mongoose --save 启动数据酷: mongod --config /usr/local/etc/mongod.conf 这里可以将这个路径设置成全局变量在nodejs里面链接数据库,并且使用dataOne这个数据集合 const DB_URL mongodb://local…...
做网站公司苏州/花西子网络营销策划方案
Compose简介Compose项目是Docker官方的开源项目,负责实现对Docker容器集群的快速编排。其代码目前在https://github.com/docker/compose 上开源。Compose定位是定义和运行多个Docker容器的应用,其前身是开源项目Fig。通过前面内容的介绍,我们…...