分享知识-快乐自己:关于 String 小案例
单个字符出现的次数:
/***
* 验证是否符合拆分条件
*
* @param text
* 原字符串
* @param sub
* 判断条件
* @return
*/
public static int count(String text, String sub) {
int count = 0, start = 0;
while ((start = text.indexOf(sub, start)) >= 0) {
start += sub.length();
count++;
}
return count;
}
一刀切上式(事先补齐):
@Test
public void demo1() {
String a = "ab bc,cd,ef gh";
String result = ""; //保存结果
a += ","; //事先补齐 ab bc,cd,ef gh,
for (int i = 0; i < a.length(); i++) {
char c = a.charAt(i); //获取每一个字符
if (c == ' ' || c == ',') {
System.out.print(result);
result = "";
} else {
result += c;
}
}
}
一刀切下式(事后修正):
@Test
public void demo2() {
String b = "abcdefg"; //结果a,b,c,d,e,f,g
String result = "";
for (int i = 0; i < b.length(); i++) {
result += "," + b.charAt(i);//获取每一个字符
//,a,b,c,d,e,f,g
}
result = result.substring(1);
System.out.println(result);
}
字符串的常用API (假设修正法)
@Test
public void demo3() {
String b = "abcdefgabcd"; //求字符串中是否有重复的字符
boolean flag = false; // 假设不重复
for (int i = 0; i < b.length(); i++) {
char c = b.charAt(i);//获取每一个字符
if (b.lastIndexOf(c) != i) {
flag = true; //重复
break;
}
}
}
字符串的常用API (正则表达式)split
@Test
public void demo4() {
String a="a b c d e f g";
String [] str=a.split(" +"); //a.split(" {1,}");
for(String s:str){
System.out.print(s);
}
}
字符串替换
@Test
public void demoText1() {
String str = "a,A,b,c,d,G,h,-Z";
char[] chars = str.toCharArray();
for (int i = 0; i < str.length(); i++) {
int count = (int) chars[i];
if ((count >= 65 && count <= 90) || (count >= 97 && count <= 127)) {
System.out.print(chars[i]);
}
}
}
字符串中单个字符出现的次数
@Test
public void demoText2() {
String text = "wefawefaafickdbbjoasdfcweccwerqeasdaajfnblsdbboioe";
StringBuffer sb = new StringBuffer();
char[] chars = text.toCharArray();
Map<String, Integer> map = new HashMap<String, Integer>(); for (int i = 0; i < chars.length; i++) {
Pattern pattern = Pattern.compile("(" + chars[i] + ")");//正则表达式 匹配 aa或bb或bb
Matcher matcher = pattern.matcher(text);
String t = "";
while (matcher.find()) {
t += matcher.group();
}
map.put(t.substring(0, 1), Integer.valueOf(t.length()));
}
Set<Map.Entry<String, Integer>> entrys = map.entrySet();
for (Map.Entry<String, Integer> entry : entrys) {
String key = entry.getKey();
Integer value = entry.getValue();
System.out.println(key + "----" + value);
}
System.out.println("-----------------------------------------");
String a = "ab bc,cd,ef gh";
String result = ""; //保存结果
a += ","; //事先补齐 ab bc,cd,ef gh,
for (int i = 0; i < a.length(); i++) {
char c = a.charAt(i);
if ((c == ' ') || (c == ',')) {
System.out.print(result);
result = "";
} else {
result += c;
}
}
}
只输出英文字符
@Test
public void demoText3() {
String str1 = "ab *s-fh*-d-+bc,cd,ef gh";
char[] chars = str1.toCharArray();
for (int i = 0; i < str1.length(); i++) {
int count = (int) chars[i];
if ((count >= 65 && count >= 90) || (count >= 97 && count >= 127)) {
System.out.print(chars[i]);
}
}
}
任意进制转换首先将3进制转换为10进制,然后再把10进制转换5进制
@Test
public void demoText4() {
String num = "200110102"; // 3进制的数字转换成5进制的
int result = 0;
for (int i = 0; i < num.length(); i++) {
char c = num.charAt(i);
result = result * 3 + (c - '0');
}
System.out.println(result); //十进制 13457
String str = "";
while (true) {
if (result == 0) break;
str += result % 5;
result = result / 5;
}
System.out.println(str);
}
字符串和数字的转换
@Test
public void demoText5() {
String str = "6789"; //字符串 需要转换成数字 6789
int num = str.charAt(0) - '0'; //
num = num * 10 + str.charAt(1) - '0';
num = num * 10 + str.charAt(2) - '0';
num = num * 10 + str.charAt(3) - '0';
System.out.println(num);
System.out.println("------------------------------");
String str1 = "6789"; //字符串 需要转换成数字 6789
int result = 0;
for (int i = 0; i < str.length(); i++) {
result = result * 10 + str.charAt(i) - '0';
}
System.out.println(result);
}
枚举与剪枝 求位数需求:数字自身平方的尾数=自身 (100W以内)
@Test
public void demoText6() {
for (int a = 0; a <= 1000000; a++) {
//求a的平方
int num = a * a;
if (num % 10 == a || num % 100 == a || num % 1000 == a || num % 10000 == a || num % 100000 == a || num % 1000000 == a) {
System.out.println("数字本身是=》" + a + "数字的平方是=》" + num);
}
}
}
鸡兔同笼
/**
* 鸡兔同笼
* 鸡兔共50头,脚共120只!
* x+y=50;
* 2x+4y=120;
*/
@Test
public void demoText7() {
for (int x = 0; x <= 50; x++) {
int y = 50 - x; //得到兔子的数量
if (2 * x + 4 * y == 120) {
System.out.println(x);
System.out.print(y);
}
}
}
判断某个字符串是否满足我们定义的正则表达式
@Test
public void demoText8() {
String a = "ABC01234";
boolean matches = a.matches("[A-Z]{1,3}[0-9]{3,5}");//返回boolean
System.out.println(matches);
}
字符串的常用API (正则表达式)replaceAll()在小括号里面的内容我们称之为子组,用$获取子组内容
@Test
public void demoText9() {
String a = "asasasa 2018-07-16 sasa sasas sasa";
//实现的效果是asasasa 07/16/2018年 sasa sasas sasa
a = a.replaceAll("([0-9]{4})-([0-9]{2})-([0-9]{2})", "$2/$3/$1 年");
System.out.print(a);
}
文字正序输出,并显示字母出现次数
public static void main(String[] args) {
String str = "服微端云入加迎欢|welcome join us !";
int flag=0;
String str1=str.substring(0, 8);
String str2=str.substring(9);
StringBuffer sb1=new StringBuffer(str1);
sb1.reverse();
String newStr=sb1.append(str2).toString();
System.out.println(newStr);
for (int i = 0; i < str2.length(); i++) {
char letter=str2.charAt(i);
if (String.valueOf(letter).matches("^[a-zA-Z]$")) {
flag++;
}
}
System.out.println("英文字符有:"+flag+"个");
}
分享知识-快乐自己:关于 String 小案例的更多相关文章
- String小案例(**)、包装类型和普通数据类型的转换(拆装箱)
###String用法: package StringTest; /**功能: * 判断Java文件名是否正确,判断邮箱格式是否正确 * 其中:合法的文件名应该以.java结尾 * 合法的邮箱名至少包 ...
- [jQuery学习系列六]6-jQuery实际操作小案例
前言最后在这里po上jQuery的几个小案例. Jquery例子1_占位符使用需求: 点击第一个按钮后 自动去check 后面是否有按钮没有选中, 如有则提示错误消息. <html> &l ...
- 02SpringMvc_springmvc快速入门小案例(XML版本)
这篇文章中,我们要写一个入门案例,去整体了解整个SpringMVC. 先给出整个项目的结构图:
- SqlDependency缓存数据库表小案例
SqlDependency的简介: SqlDependency是outputcache网页缓存的一个参数,它的作用是指定缓存失效的数据库依赖项,可以具体到数据库和表. SqlDependency能解决 ...
- Session小案例------完成用户登录
Session小案例------完成用户登录 在项目开发中,用户登陆功能再平常只是啦,当用户完毕username和password校验后.进入主界面,须要在主界面中显示用户的信息,此时用ses ...
- MVC 小案例 -- 信息管理
前几次更新博客都是每次周日晚上到周一,这次是周一晚上开始写,肯定也是有原因的!那就是我的 Tomact 忽然报错,无法启动,错误信息如下!同时我的 win10 也崩了,重启之后连 WIFI 的标志也不 ...
- JSP +MySQL实现网站的登录与注册小案例
为了练手,我就自己试着做了一个网站的登录与注册的小案例.由于没有做美化处理,所以界面并不是很好看. 网站实现的功能如下: 用户首次注册功能 用户登录功能 项目目录展示: 下面我将会分模块展示 注册模块 ...
- 《java入门第一季》之Character类小案例
/* * Character 类在对象中包装一个基本类型 char 的值 * 此外,该类提供了几种方法,以确定字符的类别小写字母,数字,等等,并将字符从大写转换成小写,反之亦然 * */ 下面通 ...
- Android JSON解析库Gson和Fast-json的使用对比和图书列表小案例
Android JSON解析库Gson和Fast-json的使用对比和图书列表小案例 继上篇json解析,我用了原生的json解析,但是在有些情况下我们不得不承认,一些优秀的json解析框架确实十分的 ...
随机推荐
- k8s调度-指定node
1.给node加标签 kubectl label nodes k8s-slave2 slave= 2.查看标签 [root@k8s_master centos7]# kubectl describe ...
- LVS+Keepalived(DR模式)学习笔记
1.简述 在互联网的中型项目中,单服务器往往已经无法满足业务本身的性能要求,这时候就会平行扩展,把负载分摊到数台服务器上(集群).一般实现集群有DNS轮询,LVS,nginx负载均衡. 集群主要目的包 ...
- 记pytorch版faster rcnn配置运行中的一些坑
记pytorch版faster rcnn配置运行中的一些坑 项目地址 https://github.com/jwyang/faster-rcnn.pytorch 一般安装配置参考README.md文件 ...
- unity绝对路径与相对路径转化
绝对路径->相对路径 string mp =“H:\unity(project)\New Unity Project\Assets\111.mat”; mp = mp.Substring(mp. ...
- 在mac上独立安装PHP环境
1.http://dditblog.com/blog_418.html 2.http://www.jianshu.com/p/0456dd3cc78b
- nodejs windows下安装运行
node 官网下载地址http://nodejs.org/ 下载自己对应的版本 ,我下的是windows版本 node-v4.1.1-x64.msi 然后 下一步 下一步 就完成安装了,非常简单, ...
- OLTP和OLAP
1 OLTP和OLAP online transaction processing,联机事务处理.业务类系统主要供基层人员使用,进行一线业务操作,通常被称为联机事务处理. online analyti ...
- hdu 3718 Different Division
Different Division Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Other ...
- mysql用户和权限管理(Linux系统下)
在mysql自带的库中有一个mysql,这个库包含了太多的东西,其中有一张表user,这张表存储了所有的用户信息. mysql> select user,host,password from u ...
- 微信小程序生命周期
微信小程序 生命周期 通俗的讲,生命周期就是指一个对象的生老病死. 从软件的角度来看,生命周期指程序从创建.到开始.暂停.唤起.停止.卸载的过程. 下面从一下三个方面介绍微信小程序的生命周期: 应用生 ...