第13章 字符串
来源:互联网 发布:2017淘宝食品新规 编辑:程序博客网 时间:2024/04/28 08:00
1、对于字符串做参数时,传的是引用,在方法中如果对字符串有改变,都会创建一个新的对象。字符串具有只读属性,任何指向它的引用都不能改变它的值。
2、可以用StringBuilder构建字符串,他的toString()方法返回它的字符串。
3、格式化输出的常规语法是:%[arguement_index$][flags][width][.precision]conversion
arguement_index$:表示参数位置,即第几个参数
flags:标记,比如负号(左对齐,默认是右对齐)等
width:指明一个域的最小尺寸,Formatter通过添加空格实现
.precision表示最大尺寸,它不像width,它并不能作用于所有对象,而且作用于不同的对象拥有不同的含义,比如作用于字符串表示最大长度,作用于浮点型表示小数位,不够的补0,不能作用于整数
可以用Formatter下的format方法输出,也可以用System.out.printf()或者System.out.format()方法输出
String.format()接收一个与Formatter.format()相同的参数,返回一个字符串,这是一个静态方法。
注意 的是当要转化为boolean输出是,对于java只要对象不为null,都返回true,即使是整数0,为null则返回false
4、for(byte b:data){System.out.printf("%05X",b);}
正则表达式
5、\s空白符 \S非空白符 \d数字0-9 \D非数字 \w单词[a-zA-Z0-9] \W非单词
6、?表示0个或1个,用在所修饰的字符后面
7、正则表达式用\\表示一个\
8、常用语法:
Pattern p=Pattern.compiles(regex);
Matcher m=p.matcher(s);
m.matches();//返回boolean,是否完全匹配,即s是否是一个regex
此外可以:
while(m.find()){//返回boolean,字符串s中是否包含一个或多个regex。
System.out.println(m.start()+m.group()+(m.end()-1)); //group将打印匹配的子串
}
另外需要说明:find(int index)表示从s中第index个字符开始匹配,即略过前index字符(index>=0)
正则表达式中()代表一组,比如ab(td([er])),第0组表示整个正则表达式,第一组是td([ere]),第二组是[er]
group(int i)代表匹配第i组(详见p302)
eg.String s="/*我是注释*/";
String regex="/\\*(.*)\\*/";
Matcher m=Pattern.compile(regex).matcher(s);
while(m.find()){
System.out.println(m.group(1));
}//output:我是注释
9、另外Pattern有个静态方法matches(String regex, CharSequence input)
10、有一些标记比如(?i)忽视大小写,(?m)多行模式标记,你可以在regex前面直接添加,比如String regex="(?i)[ttr]";也可以Pattern.compile(regex,标记字段)
11、另外注意appendReplacement方法(详见jdk文档),它的典型用法是:
Pattern p = Pattern.compile("cat");
Matcher m = p.matcher("one cat two cats in the yard");
StringBuffer sb = new StringBuffer();
while (m.find()) {
m.appendReplacement(sb, "dog");
}
m.appendTail(sb);
System.out.println(sb.toString());
12、需要注意的是,matches方法和find方法都会改变匹配器的状态,即匹配的位置,这个可以用reset()方法消除。带参数的reset(String s)方法改变要匹配的字符串。
2、可以用StringBuilder构建字符串,他的toString()方法返回它的字符串。
3、格式化输出的常规语法是:%[arguement_index$][flags][width][.precision]conversion
arguement_index$:表示参数位置,即第几个参数
flags:标记,比如负号(左对齐,默认是右对齐)等
width:指明一个域的最小尺寸,Formatter通过添加空格实现
.precision表示最大尺寸,它不像width,它并不能作用于所有对象,而且作用于不同的对象拥有不同的含义,比如作用于字符串表示最大长度,作用于浮点型表示小数位,不够的补0,不能作用于整数
可以用Formatter下的format方法输出,也可以用System.out.printf()或者System.out.format()方法输出
String.format()接收一个与Formatter.format()相同的参数,返回一个字符串,这是一个静态方法。
注意 的是当要转化为boolean输出是,对于java只要对象不为null,都返回true,即使是整数0,为null则返回false
4、for(byte b:data){System.out.printf("%05X",b);}
正则表达式
5、\s空白符 \S非空白符 \d数字0-9 \D非数字 \w单词[a-zA-Z0-9] \W非单词
6、?表示0个或1个,用在所修饰的字符后面
7、正则表达式用\\表示一个\
8、常用语法:
Pattern p=Pattern.compiles(regex);
Matcher m=p.matcher(s);
m.matches();//返回boolean,是否完全匹配,即s是否是一个regex
此外可以:
while(m.find()){//返回boolean,字符串s中是否包含一个或多个regex。
System.out.println(m.start()+m.group()+(m.end()-1)); //group将打印匹配的子串
}
另外需要说明:find(int index)表示从s中第index个字符开始匹配,即略过前index字符(index>=0)
正则表达式中()代表一组,比如ab(td([er])),第0组表示整个正则表达式,第一组是td([ere]),第二组是[er]
group(int i)代表匹配第i组(详见p302)
eg.String s="/*我是注释*/";
String regex="/\\*(.*)\\*/";
Matcher m=Pattern.compile(regex).matcher(s);
while(m.find()){
System.out.println(m.group(1));
}//output:我是注释
9、另外Pattern有个静态方法matches(String regex, CharSequence input)
10、有一些标记比如(?i)忽视大小写,(?m)多行模式标记,你可以在regex前面直接添加,比如String regex="(?i)[ttr]";也可以Pattern.compile(regex,标记字段)
11、另外注意appendReplacement方法(详见jdk文档),它的典型用法是:
Pattern p = Pattern.compile("cat");
Matcher m = p.matcher("one cat two cats in the yard");
StringBuffer sb = new StringBuffer();
while (m.find()) {
m.appendReplacement(sb, "dog");
}
m.appendTail(sb);
System.out.println(sb.toString());
12、需要注意的是,matches方法和find方法都会改变匹配器的状态,即匹配的位置,这个可以用reset()方法消除。带参数的reset(String s)方法改变要匹配的字符串。
0 0
- 第13章 字符串
- 第13章 字符串
- 《Thinkinginjava》第13章-字符串
- [think in java]第13章 字符串
- Thinking in Java 第13章 字符串
- 第1章 字符串
- 第3章 字符串
- 第11章,字符串和字符串函数
- 第8章 字符串处理
- 第4章 字符串验证
- 第1章 使用字符串
- 第3章 使用字符串
- 第4章_字符串
- 第6章 字符串操作
- 字符串--来自《Java编程思想第四版》第13章
- 《Java 编程思想》第13章 字符串 笔记
- java编程思想学习_第13章_字符串
- C语言程序设计现代方法---第13章:字符串
- 黑马程序员--NSArray的使用
- 任何时代都会有迷茫
- BZOJ 1061: [Noi2008]志愿者招募(最小费用最大流)
- 学着休息——不会休息就不会工作
- 自定义单元格
- 第13章 字符串
- C语言数据结构-顺序队列
- C++ TCp通信遇到的无法解析外部符号
- 互联网的地位
- java 枚举
- eclipse中文乱码修改新方法,在修改了所有的utf-8都没有用就这样修改
- 20151011112722实验
- iOS 视频播放基础
- PHP计划任务:如何使用Linux的Crontab执行PHP脚本