package cn.hncu.day8;

public class RegExpDemo {
public static void main(String[] args) {
String str ="011-12345678";
boolean boo = str.matches("0\\d{2}-\\d{8}");
System.out.println(boo);//true
str ="110-12345678";
boo = str.matches("0\\d{2}-\\d{8}");
System.out.println(boo);//false

str ="dsÕÅdsjksdj·ásaa";
boo = str.matches(".*ÕÅ.*·á.*");//ÕÅdsjksdj·á
System.out.println(boo);//false

}
}

这个地发关于字符串的匹配,可以去百度上搜索例如:

\w  匹配数字,字母,下划线

\b  以开头或结尾

\d  数字

^  匹配开始

$  匹配结束

{n}  重复N次

/内容/  构成一个不区分大小写的正则表达式

----------------------------------------------------------

package cn.hncu.day8;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegExpDemo2 {
public static void main(String[] args) {
String str ="011-12345678";
Pattern p = Pattern.compile("0\\d{2}-\\d{8}");//p--可以理解成正则表达式的工具
Matcher m = p.matcher(str);//m--可以理解成匹配结果的封装体
boolean boo = m.matches();//读取匹配结果信息
System.out.println(boo);
}
}

--------------------------------------------------------------------------

package cn.hncu.day6;

import java.io.UnsupportedEncodingException;

public class StringDemo {

public static void main(String[] args) {
System.out.println("========1演示format()方法=========");
String str;
for(int i=1;i<10;i++){
str = String.format("hncujava-%3d", i);//这里相当于C里面的printf("%3s", );
System.out.println(str);
}
System.out.println("========2=========");
// 2、输出String s =“1234567”的长度,第3个字符,字节个数
String s="1234567";
System.out.println("长度:"+ s.length() ); //7
System.out.println("第3个字符:"+ s.charAt(2) );//3
System.out.println("字节个数:"+ s.getBytes().length);//7

System.out.println("========3=========");
//3、输出s=“1234567中"的长度,第3个字符,字节个数
s="1234567中";
System.out.println("长度:"+ s.length() ); //8
System.out.println("第3个字符:"+ s.charAt(2) );//3
System.out.println("字节个数:"+ s.getBytes().length);//GBK=9 UTF-8=10

System.out.println("========4=========");
//4、判断某段字符是否含有汉字(假定只有中英文字符)
s ="jj中kks我w你ew";
if(s.getBytes().length==s.length()){
System.out.println(s+"---没有汉字");
}else{
System.out.println(s+"---有汉字,个数为:"+ (s.getBytes().length-s.length()) );
}

System.out.println("========5=========");
//5、分别输出一个字符串中的中文字符、英文字母、数字
s ="jj中kk3d我s0w4w";
char cs[] = s.toCharArray();
for(char c: cs){
if((""+c).getBytes().length > (""+c).length() ){
System.out.println("汉字:"+c);
}else if(c>='a'&&c<='z' || c>='A'&&c<='Z'){
System.out.println("英文字母:"+c);
}else if(c>='0'&&c<='9'){
System.out.println("数字:"+c);
}
}

System.out.println("========6=========");
//6 演示编码问题
s="1234567中";
try {
//以指定编码的方式来获取字符串中的字节数组
System.out.println(s.getBytes("UTF-8").length);
byte bytes[] = "中国wqqew我".getBytes("UTF-8");
String ss1 = new String(bytes);//使用平台的默认码表,如果默认是gbk则乱码,如果默认是utf-8则ok
System.out.println(ss1);
String ss2 = new String(bytes,"gbk");//指定码表,乱码----因为解码表和编码表不同
System.out.println(ss2);
String ss3 = new String(bytes,"utf-8");//指定码表,ok----因为解码表和编码表一致
System.out.println(ss3);

} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}

}

}

---------------------------------------------------------------------------------

package cn.hncu.day6;

import java.io.UnsupportedEncodingException;

public class StringDemo2 {

public static void main(String[] args) {
System.out.println("========1=========");
// 1、字符串比较大小
String str1 = "1234567中hw";//48--'0' 51--'3'
String str2 = "12hello";//97--'a' 104--'h'
//System.out.println( str1>str2 );//错,只有基本数据类型才能使用“>”
System.out.println( str1.compareTo(str2) );//依次把两个字符串的每个字符进行相减,只要出现一个字符不相等,就把这两个字符相减的结果作为整个函数的返回值---小于0代表str1更小,大于0代表str1更大,等于0则str1与str2相等

System.out.println("========2=========");
// 2、子串位置查找
String s="he";
System.out.println( str1.indexOf(s) );//-1,代表str1中不存在子串s
System.out.println( str2.indexOf(s) );//2,代表子串s在str2中的位置从第2个字符处开始

System.out.println("========3=========");
// 3、查找姓名中带“飞”字的人
String[] names={"张三","李四","张飞","张三飞","李四飞","飞飞张","叶飞燕","小张"};
String s1="飞";
for(String name: names){
if(name.indexOf(s1)>=0){
System.out.print(name+" ");
}
}
System.out.println();

//查找姓“张”的人
//法1
String s2="张";
for(String name: names){
if(name.indexOf(s2)==0){
System.out.print(name+" ");
}
}
System.out.println();
//法2
for(String name: names){
if(name.startsWith(s2)){
System.out.print(name+" ");
}
}
System.out.println();

System.out.println("========4=========");
// 4、查找扩展名为“.java”的文件名。
String[] fileNames={"aa.java","a.java.c","ba.c.java","we.txt","java.js","1.java"};
String s3=".java";
for(String fileName:fileNames){
if(fileName.endsWith(s3)){
System.out.print(fileName+" ");
}
}
System.out.println();

System.out.println("========5=========");
//5 练习substring
String str3="welcome you!";
System.out.println(str3.substring(3));//come you!
System.out.println(str3.substring(2,4));//lc---规范:凡是取某个区间范围的,都是:左包含右不包含

System.out.println("========6=========");
//equals和equalsIgnoreCase()
String str4="Welcome You!";
System.out.println(str3.equals(str4));//false
System.out.println(str3.equalsIgnoreCase(str4));//true

System.out.println("========7=========");
//※注意※----凡是对String变量进行处理的方法,处理结果都是以新的字符串返回出来的(因此我们要手动去接返回结果),原来的字符串变量是没有变化的!---该思想与我们之前讲的String变量作为方法的参数时,用法和基本数据类型相同即是值传递---思想是一致的!
String ss1= str4.toUpperCase();
System.out.println(str4);//Welcome You!--旧的
System.out.println(ss1);//我们想要的结果
String ss2 = str4.replace('o', '6');
System.out.println(str4);//Welcome You!--旧的
System.out.println(ss2);//我们想要的结果

System.out.println("========8=========");
// 8、用户信息的包装与拆解
String userInfo="hncu,1234,13612345678";
String strs[] = userInfo.split(",");
User user = new User();
user.setName(strs[0]);
user.setPwd(strs[1]);
user.setTel(strs[2]);
System.out.println(user);

String str5 = "aa,bb,cc,a1 b2 dd";
String strs2[] = str5.split(",| +");
for(String str: strs2){
System.out.println(str);
}

System.out.println("----------------");
String str6 = "aa|bb|cc|a1|b2.dd";
//法1
String strs3[] = str6.split("\\.|\\|");//如果是正则表达式中有特殊含义的字符作为分隔符,那么得进行转义
for(String str: strs3){
System.out.println(str);// \\t
}

System.out.println("--------+--------");
//法2
String str7 = str6.replace("|", ",");
str7 = str7.replace(".", ",");
String strs4[] = str7.split(",");
for(String str: strs4){
System.out.println(str);// \\t
}

System.out.println("========8=========");
// 9、用户数据后台校验前的过滤
String str9=" dsjsdjksd dskkds ";
String ss9 = str9.trim();
System.out.println(str9);//旧的
System.out.println(ss9);//我们想要的结果

}

}

class User{
private String name;
private String pwd;
private String tel;
public User(String name, String pwd, String tel) {
super();
this.name = name;
this.pwd = pwd;
this.tel = tel;
}

public User() {
super();
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getPwd() {
return pwd;
}

public void setPwd(String pwd) {
this.pwd = pwd;
}

public String getTel() {
return tel;
}

public void setTel(String tel) {
this.tel = tel;
}

@Override
public String toString() {
return "User [name=" + name + ", pwd=" + pwd + ", tel=" + tel + "]";
}
}

-----------------------------------------------------------------------------------------

package cn.hncu.day8;

public class StringBufferDemo2 {

public static void main(String[] args) {
String str = new String("java");
strReplace(str);
System.out.println(str);//不变

StringBuffer sb = new StringBuffer("java");
sbReplace(sb);
System.out.println(sb.toString());//变
}

private static void sbReplace(StringBuffer sb) {//参数用法同:引用类型---引用传递
sb.append("EE");
}

private static void strReplace(String str) {//参数用法同:基本数据---值传递
str = str.replaceAll("j", "i");
}

}StringBuffer是多线程安全的,而StringBuilder不是线程安全的,StringBuffer类略微会快一些;

String类的基本用法与注意点,StringBuffer类的用法的更多相关文章

  1. String类与StringBuffer类

    String类与StringBuffer类   一.String类和StringBuffer类的区别 String类是不可变类,新建的对象为不可变对象(String类的内容和长度是固定的),一旦被创建 ...

  2. 【学习笔记】String进阶:StringBuffer类(线程安全)和StringBuilder类

    一.除了使用String类存储字符串之外,还可以使用StringBuffer类存储字符串.而且它是比String类更高效的存储字符串的一种引用数据类型. 优点: 对字符串进行连接操作时,使用Strin ...

  3. StringBuffer类、StringBuilder类详解

    StringBuffer是一个字符串缓冲区,是一个容器,而且长度可变,可以直接操作多个数据类型, 最终会通过toString()方法变成字符串. 容器的功能有: 1.存储 public StringB ...

  4. Java中StringBuffer类的常用方法

    StringBuffer:StringBuffer类型 描述:在实际应用中,经常回遇到对字符串进行动态修改.这时候,String类的功能受到限制,而StringBuffer类可以完成字符串的动态添加. ...

  5. String类和StringBuffer类的方法

    一.String类的方法 public char charAt(int index)          返回字符串index个字符 public int length()         返回字符串长 ...

  6. .NET3.5中JSON用法以及封装JsonUtils工具类

    .NET3.5中JSON用法以及封装JsonUtils工具类  我们讲到JSON的简单使用,现在我们来研究如何进行封装微软提供的JSON基类,达到更加方便.简单.强大且重用性高的效果. 首先创建一个类 ...

  7. String类和StringBuffer类的区别

    首先,String和StringBuffer主要有2个区别: (1)String类对象为不可变对象,一旦你修改了String对象的值,隐性重新创建了一个新的对象,释放原String对象,StringB ...

  8. 【java】String类和StringBuffer类常用操作

    String类是字符串常量,是不可更改的常量.而StringBuffer是字符串变量,它的对象是可以扩充和修改的.StringBuffer在进行字符串处理时,不生成新的对象,在内存使用上要优于Stri ...

  9. java中String类、StringBuilder类和StringBuffer类详解

    本位转载自http://www.cnblogs.com/dolphin0520/p/3778589.html  版权声明如下: 作者:海子 出处:http://www.cnblogs.com/dolp ...

随机推荐

  1. Uva 10294 Arif in Dhaka (First Love Part 2)

    Description 现有一颗含\(N\)个珠子的项链,每个珠子有\(t\)种不同的染色.现求在旋转置换下有多少种本质不同的项链,在旋转和翻转置换下有多少种本质不同的项链.\(N < 51,t ...

  2. BZOJ 1592: [Usaco2008 Feb]Making the Grade 路面修整

    Description FJ打算好好修一下农场中某条凹凸不平的土路.按奶牛们的要求,修好后的路面高度应当单调上升或单调下降,也就是说,高度上升与高度下降的路段不能同时出现在修好的路中. 整条路被分成了 ...

  3. Qt 静态函数QMetaObject::connectSlotsByName(QObject * object)按命名规则自动connect,不需要手动connect

    看别人代码看到void on_MyWidget_slotTest(); 就郁闷了,没看到他代码里有connect 却能把信号和槽可以连接起来. 今日回顾书本发现该函所的nb之处. QMetaObjec ...

  4. git撤销提交到remote的commit

    Reseting remote to a certain commit Assuming that your branch is called master both here and remotel ...

  5. Xmanager Enterprise 4 使用说明

    Xmanager Enterprise 4 使用说明 安装Xmanager Enterprise 4操作步骤比较简单,下一步即可完成. Xbrowser 使用xdcmp 协议通过图形化桌面远程连接到l ...

  6. 利用if else 求房贷

    static void Main(string[] args)        {            while (true)     //主要就是公式的运用和if else 的嵌套         ...

  7. 【Android 复习】:从Activity中返回数据

    在实际的应用中,我们不仅仅要向Activity传递数据,而且要从Activity中返回数据,虽然返回数据和传递类似,也可以采用上一讲中的四种方式来传递数据,但是一般建议采用Intent对象的方式的来返 ...

  8. Linux停SVN提交时强制写日志

    Linux下SVN提交时强制写日志 SVN默认可以不写注释提交,有时候可能忘记写注释,有的人也没有写注释的习惯,导致翻看history的时候都不知道做了哪些更改,可以依照以下步骤修改SVN配置,强制提 ...

  9. Windows 8/8.1系统下硬盘占用率100%的问题解决思路汇总

    家庭组 2.关闭虚拟内存 3.关闭Windows 8快速开机功能 4.服务进程superfetch 5.系统下软件排除 操作步骤: 1.Windows 8系统的家庭组方便多人不用存储设备就能在局域网中 ...

  10. [转]js动态创建json类型

    废话少说:json是一个特有的键值对数组类型.既然是数组类型那么我们就可以这样定义 1.先定义数组 var Data = []; 2.理解键值对 对象名:值{ "id": i, & ...