分享知识-快乐自己:关于 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解析框架确实十分的 ...
随机推荐
- ApplicationMaster是如何启动container并通信
ApplicationMaster是如何启动container并通信 hadoop的关键进程 http://blog.csdn.net/jediael_lu/article/details/46386 ...
- ACE_Svc_Handler 通信原理
ACE作为通讯方面的开源架构,不但用c++实现,而且用JAVA实作的架构已经可以使用了,由此看来掌握ACE成为每歌开发通讯程序的程序员的必备技能. ACE的库分为4个层次: OS适配层该层将ACE的较 ...
- 魔幻特效,慢放世界,nova 3带你玩转抖音新技能
无论是明暗相交的都市夜色, 还是鲜亮风景前的逆光美人: 无论是瞬息飘飞的叶片, 还是动如脱兔的稚子孩童…… 色彩与速度,精彩的每一刻, 华为摄影都尽在掌握! (华为手机摄影效果) 一直以来,华为的图形 ...
- MIC中示例程序计算π
mic中编程十分简单,只需在普通程序中简单加几句就可以,使用 lspci|grep -i -co-processor 命令可以查看机器中是否插入MIC卡以及MIC卡的数目,MIC编程环境的配置这里就不 ...
- linux 时间与本地时间不对应解决办法
date -s '2015-01-22 13:00:22' #设置时间 clock -w #写入mac操作系统中 -------------------------------------date - ...
- 使用 SourceTree 遇到冲突的解决方法
首先,更新代码之前先 git stash ,然后 git pull ,再 git stash pop 这时候如果本地改的代码跟线上的冲突了,就报错了.那么就需要手动解决冲突. 打开存在冲突的文件,会看 ...
- linux下nginx安装php
把php安装包上传到linux的/usr/local/src 1.解压 cd /usr/local/src tar zxvf php-5.6.9.tar.gz cd php-5.6.9 2.编译安装 ...
- 【BZOJ1038】[ZJOI2008]瞭望塔 半平面交
[BZOJ1038][ZJOI2008]瞭望塔 Description 致力于建设全国示范和谐小村庄的H村村长dadzhi,决定在村中建立一个瞭望塔,以此加强村中的治安.我们将H村抽象为一维的轮廓.如 ...
- 使用google的GSON解析json格式的数据
GSON是谷歌提供的开源库,用来解析Json格式的数据,非常好用.如果要使用GSON的话,则要先下载gson-2.2.4.jar这个文件,如果是在Android项目中使用,则在Android项目的li ...
- 2.PyCharm安装和使用之HelloWorld
百度搜一个就好了, 然后下一步下一步 重点来了,穷! 这软件需要购买不然就只能用30天, 作为屌丝的我,在网上不然的搜索: 然后终于搞定了! 屌丝的春天:http://idea.lanyus.co ...