黑马程序员_String和正则表达式方法小结

来源:互联网 发布:apktool mac 编辑:程序博客网 时间:2024/05/18 00:07

---------------------------   android培训java培训、期待与您交流---------------------------

1  String的特点:

字符串是一个特殊的对象。
字符串一旦初始化就不可以被改变。
例子:String str = “abc”;(在内存中这是一个对象)
   String str1 = new String(“abc”); (在内存中这是两个对象)

字符串常见方法:

 1) 获取:
int length():获取长度。
char charAt(int index):根据位置获取位置上某个字符。
int indexOf(char ch):返回的是ch在字符串中第一次出现的位置。
int indexOf(char ch, int fromIndex) :从fromIndex指定位置开始,获取ch在字符串中出现的位置。
int indexOf(String str):返回的是str在字符串中第一次出现的位置。
int indexOf(String str, int fromIndex) :从fromIndex指定位置开始,获取str在字符串中出现的位置。
int lastIndexOf(char ch) :返回的是ch在字符串中右边第一次出现的位置。
String substring(begin):获取字符串中的一部分。从begin开始到结束。
String substring(begin,end);获取字符串中的一部分。从begin开始到到end-1结束。(包含头不包含尾)
2) 判断:
boolean contains(str):字符串中是否包含某一个子串。
特殊之处:indexOf(str):可以索引str第一次出现位置,如果返回-1.表示该str不在字符串中存在。所以,也可以用于对指定判断是否包含。
if(str.indexOf("aa")!=-1)而且该方法即可以判断,有可以获取出现的位置。
boolean isEmpty(): 字符中是否有内容。原理就是判断长度是否为0.
boolean startsWith(str):字符串是否是以指定内容开头。
boolean endsWith(str): 字符串是否是以指定内容结尾。
boolean equals(str):判断字符串内容是否相同。复写了Object类中的equals方法。
boolean equalsIgnoreCase():判断内容是否相同,并忽略大小写。
3)转换:
String(char[]):构造函数,将字符数组转成字符串。
String(char[],offset,count):将字符数组中的一部分转成字符串。
static String copyValueOf(char[]):将字符数组转成字符串。
static String copyValueOf(char[] data, int offset, int count):将字符数组中的一部分转成字符串。
static String valueOf(char[]):将字符数组和基本数据类型转成字符串。
char[] toCharArray(): 将字符串转成字符数组。
String(byte[]):将字节数组转成字符串。
String(byte[],offset,count):将字节数组中的一部分转成字符串。
byte[]  getBytes():将字符串转成字节数组。
static String valueOf(int): 将基本数据类型转成字符串。
static String valueOf(double):将基本数据类型转成字符串。
4)替换:
String replace(oldchar,newchar);将字符串中oldchar替换成newchar。
5)切割:
String[] split(regex);将字符串按照regex规则切割。
6)转换:
将字符串转成大写或则小写。
String toUpperCase();将字符串转成大写。
String toLowerCase();将字符串转成小写。
String trim(): 将字符串两端的多个空格去除。
int compareTo(string):对两个字符串进行自然顺序的比较。

2  StringBuilder

特点:

StringBuilder是一个容器,可变长度的,用于存放String。
常用方法:

1)存储:
StringBuilder append():将指定数据作为参数添加到已有数据结尾处。
StringBuilder insert(index,数据):可以将数据插入到指定index位置。
2)删除:
StringBuilder delete(start,end):删除缓冲区中的数据,包含start,不包含end。
StringBuilder deleteCharAt(index):删除指定位置的字符。
3)获取:(同String的获取方法)
char charAt(int index)
int indexOf(String str)
int lastIndexOf(String str)
int length()
String substring(int start, int end)
4)替换:
StringBuilder replace(start,end,string):将start到end-1角标位的字符替换成String。
void setCharAt(int index, char ch):将index角标位的字符替换成ch。
StringBuilder reverse():将StringBuffer反转。
(注意:StringBuffer是线程同步。StringBuilder是线程不同步。建议使用StringBuilder)  

3  基本数据类型对象包装类 

基本数据类型

byte

short    

int  

 long 

  boolean

 float 

double 

char

对象包装类 

Byte  

Short  

  Integer  

 Long

  Boolean       

 Float        

 Double   

Character

 常见作用:
用于基本数据类型和字符串类型之间做转换。
基本数据类型+""
基本数据类型.toString(基本数据类型值); (如: Integer.toString(34);//将34整数变成"34";)
常用方法:
xxx a = Xxx.parseXxx(String):字符串转成基本数据类型。
例如: 
 int a = Integer.parseInt("123");
 double b = Double.parseDouble("12.23");
 boolean b = Boolean.parseBoolean("true");

4 Integer

基本数据类型对象包装类新特性 :
Integer x = new Integer(4);可以直接写成
 Integer x = 4;//自动装箱。
x   = x + 5;// 自动拆箱。通过intValue方法。
当Integer对象的数值在byte(-128~127)范围内,对于新特性,如果该数值已经存在,则不会在开辟新的空间。
需要注意:
在使用时,Integer x = null;上面的代码就会出现NullPointerException。
Integer的常用方法: 
static String toBinaryString(int i):十进制i转成二进制。
static String toHexString(int i):十进制i转成十六进制。
static String toOctalString(int i):十进制i转成八进制。
static int parseInt(string,radix);将String数字的radix进制转换成十进制。
Integer i = new Integer("123");将String变成Integer。
int num = i.intValue();//将Integer变成int。

5 String的正则表达式 

正则表达式:符合一定规则的表达式。
作用:用于专门操作字符串。
特点:用于一些特定的符号来表示一些代码操作。这样就简化书写。所以学习正则表达式,就是在学习一些特殊符号的使用。
好处是可以简化对字符串的复杂操作。弊端是符号定义越多,正则越长,阅读性越差。
关键字:
regex:定义正则表达式的规则,如果regex中有定义组,可以在第二参数中通过$符号获取正则表达式中的已有的组。
boolean matches:用规则匹配整个字符串,只要有一处不符合规则,就匹配结束,返回false。
String[] split();按照规则对字符串进行切割。
String replaceAll(regex,str);按照规则对字符串进行替换。
[^abc] 任何字符,除了 a、b 或 c 。
X? X,一次或一次也没有
X* X,零次或多次
X+ X,一次或多次
X{n} X,恰好 n 次
X{n,} X,至少 n 次
X{n,m} X,出现n~m次。(包含n和m)。
例子:
String regex = "[1-9]\\d{4,14}";表示第一位是1~9,第二位是0~9并且要出现4~14次。(//d,在正则表达式中//表示/)
str.split("\\.");表示将str按照"."来进行切割。因为"."在正则表达式中有特殊意义,所以需要转义一下,写成"\\."。
组:
捕获组可以通过从左到右计算其开括号来编号。例如,在表达式 ((A)(B(C))) 中,存在四个这样的组:
1     ((A)(B(C)))
2     \A
3     (B(C))
4     (C)
用法:
规则封装成一个组,用()完成。组的出现都有编号。从1开始。 想要使用已有的组可以通过  \n(n就是组的编号)的形式来获取。
$n表示获取前一个编号为n的组。
例子:
str.split("(.)\\1+");将str按照叠词完成切割
str.replaceAll("(.)\\1+","$1");将重叠的字符替换成单个字母。

练习:(获取字符串中3个字母的单词。)

import java.util.regex.*;

class RegexDemo
{
 public static void main(String[] args)
 {
  String str = "ming tian jiu yao fang jia le ,da jia。";
  getDemo(str);
 }
 public static void getDemo(String str)
 {
  System.out.println(str);
  String reg = "
\\b[a-z]{3}\\b";//定义单词为3个字母的规则,b表示单词边界。
  //将规则封装成对象
  Pattern p = Pattern.compile(reg);
  //让正则对象和要作用的字符串相关联。获取匹配器对象。
  Matcher m  = p.matcher(str);
  while(m.find())//将规则作用到字符串上,并进行符合规则的子串查找。复合规则就为T,
  {
   System.out.println(m.group());//用于获取匹配后结果。
   System.out.println(m.start()+"...."+m.end());//返回匹配后单词的角标
  }
 }
}

 

 

---------------------------   android培训java培训、期待与您交流---------------------------

 

 

详细请查看:http://edu.csdn.net/heima/
原创粉丝点击