单个字符出现的次数:

/***
* 验证是否符合拆分条件
*
* @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 小案例的更多相关文章

  1. String小案例(**)、包装类型和普通数据类型的转换(拆装箱)

    ###String用法: package StringTest; /**功能: * 判断Java文件名是否正确,判断邮箱格式是否正确 * 其中:合法的文件名应该以.java结尾 * 合法的邮箱名至少包 ...

  2. [jQuery学习系列六]6-jQuery实际操作小案例

    前言最后在这里po上jQuery的几个小案例. Jquery例子1_占位符使用需求: 点击第一个按钮后 自动去check 后面是否有按钮没有选中, 如有则提示错误消息. <html> &l ...

  3. 02SpringMvc_springmvc快速入门小案例(XML版本)

    这篇文章中,我们要写一个入门案例,去整体了解整个SpringMVC. 先给出整个项目的结构图:

  4. SqlDependency缓存数据库表小案例

    SqlDependency的简介: SqlDependency是outputcache网页缓存的一个参数,它的作用是指定缓存失效的数据库依赖项,可以具体到数据库和表. SqlDependency能解决 ...

  5. Session小案例------完成用户登录

    Session小案例------完成用户登录     在项目开发中,用户登陆功能再平常只是啦,当用户完毕username和password校验后.进入主界面,须要在主界面中显示用户的信息,此时用ses ...

  6. MVC 小案例 -- 信息管理

    前几次更新博客都是每次周日晚上到周一,这次是周一晚上开始写,肯定也是有原因的!那就是我的 Tomact 忽然报错,无法启动,错误信息如下!同时我的 win10 也崩了,重启之后连 WIFI 的标志也不 ...

  7. JSP +MySQL实现网站的登录与注册小案例

    为了练手,我就自己试着做了一个网站的登录与注册的小案例.由于没有做美化处理,所以界面并不是很好看. 网站实现的功能如下: 用户首次注册功能 用户登录功能 项目目录展示: 下面我将会分模块展示 注册模块 ...

  8. 《java入门第一季》之Character类小案例

    /*  * Character 类在对象中包装一个基本类型 char 的值  * 此外,该类提供了几种方法,以确定字符的类别小写字母,数字,等等,并将字符从大写转换成小写,反之亦然  * */ 下面通 ...

  9. Android JSON解析库Gson和Fast-json的使用对比和图书列表小案例

    Android JSON解析库Gson和Fast-json的使用对比和图书列表小案例 继上篇json解析,我用了原生的json解析,但是在有些情况下我们不得不承认,一些优秀的json解析框架确实十分的 ...

随机推荐

  1. 让子元素在父元素中水平居中align-items

    做案例中,我们会发现让子元素在父元素中垂直居中,要设置margin和padding等,各种设置才能垂直居中 现在可以使用CSS3中的align-items实现 align-items 定义子元素在父元 ...

  2. Lumen开发:如何向 IoC 容器中添加自己定义的类

    版权声明:本文为博主原创文章,未经博主允许不得转载. 先在起始文件bootstrap/app.php加上$app->register(App\Providers\User\UserService ...

  3. Android Studio报Error:Execution failed for task &#39;:Companion:preDexDebug&#39;.

    错误例如以下: Error:Execution failed for task ':Companion:preDexDebug'. > com.android.ide.common.proces ...

  4. 修改Jmeter配置使能支持更大并发

    Jmeter做并发测试时,报错 java.lang.OutOfMemoryError:gc overhead limit exceeded. 原因是jmeter默认分配内存的参数很小,256M吧.故而 ...

  5. 【BZOJ4537】[Hnoi2016]最小公倍数 分块

    [BZOJ4537][Hnoi2016]最小公倍数 Description 给定一张N个顶点M条边的无向图(顶点编号为1,2,…,n),每条边上带有权值.所有权值都可以分解成2^a*3^b的形式.现在 ...

  6. Storm编程模型及Worker通信机制

    1.编程模型 2.Worker通信机制

  7. 九度OJ 1283:第一个只出现一次的字符 (计数)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:1808 解决:997 题目描述: 在一个字符串(1<=字符串长度<=10000,全部由大写字母组成)中找到第一个只出现一次的字符 ...

  8. 2.二级接口ListableBeanFactory

    这个随笔主要讲的是ListableBeanFactory package org.springframework.beans.factory; import java.lang.annotation. ...

  9. Python菜鸟之路:Python基础-模块

    什么是模块? 在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护.为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,分组的规则就是把实现了某个 ...

  10. 8.Django模型类例子

    这里定义4个模型 作者:一个作者有姓名 作者详情:包括性别,email,出生日期, 出版商:名称,地址,城市,省,国家,网站 书籍:名称,日期 分析: 作者详情和作者一对一的关系 一本书可以有多个作者 ...