黑马程序员-java-String

来源:互联网 发布:怎么在淘宝接代练单子 编辑:程序博客网 时间:2024/05/06 02:54
----------------------ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------     

      String类用于描述字符串事物.

String常用方法:

获得索引值:
1.int length().获取字符串长度。
2.int indexOf(int ch),获取某个字符在字符串中第一次出现的位置。
3.int indexOf(int ch,int start),获取某个字符从某位置开始第一次出现的位置
4.int indexOf(String string),获取某个字符串在字符串中第一次出现的位置。
5.int indexOf(String string,int start),获取某个字符串从某位置开始第一次出现的位置
6.int lastIndexOf(int ch),返回指定字符在此字符串中最后一次出现处的索引。
7.int lastIndexOf(int ch, int fromIndex) ,返回指定字符在此字符串中最后一次出现处的索引,从指定的索引处开始进行反向搜索。
8.int lastIndexOf(String str),返回指定子字符串在此字符串中最右边出现处的索引。
9.int lastIndexOf(String str, int fromIndex) ,返回指定子字符串在此字符串中最后一次出现处的索引,从指定的索引开始反向搜索。
10.char charAt(int index),返回指定索引处的 char 值。

获得子串:
1. CharSequence subSequence(int beginIndex, int endIndex),  返回一个新的字符序列,它是此序列的一个子序列。
2. String substring(int beginIndex) ,获得从指定位置开始的子串。
3. String substring(int beginIndex, int endIndex),获得指定区间的子串。


获得转换后的新字符串:
1.String replace(char oldChar, char newChar),用一个新字符替换字符串中的老字符并返回新字符串。
2.String toLowerCase(),将字符串中的所有字符都转换成小写。
3.String toUpperCase(),将字符串中的所有字符都转换成大写。
4.String trim(),返回字符串的副本,忽略前导空白和尾部空白。
5.String concat(String str),将指定字符串连接到当前字符串末尾,并返回新字符串。
6.char[] toCharArray(),将字符串转换成字符数组。
7.byte[] getBytes(String charsetName),将字符串转换成对应字节数组。
 
 
一些静态方法:
1.static String valueOf(boolean b), 返回 boolean 参数的字符串表示形式。
2.static String valueOf(char c), 返回 char 参数的字符串表示形式。
3.static String valueOf(char[] data), 返回 char 数组参数的字符串表示形式。
4.static String valueOf(char[] data, int offset, int count), 返回 char 数组参数的特定子数组的字符串表示形式。
5.static String valueOf(double d,) 返回 double 参数的字符串表示形式。
6.static String valueOf(float f), 返回 float 参数的字符串表示形式。
7.static String valueOf(int i), 返回 int 参数的字符串表示形式。
8.static String valueOf(long l) ,返回 long 参数的字符串表示形式。
9.static String valueOf(Object obj) ,返回 Object 参数的字符串表示形式。
10.static String copyValueOf(char[] data) ,回指定数组中表示该字符序列的 String。
11.static String copyValueOf(char[] data, int offset, int count),返回指定数组中表示该字符序列的 String。

判断:
1.boolean contains(CharSequence s),判断当前字符串是否包含指定的char值序列。
2.boolean endsWith(String suffix) ,判断当前字符串是否以指定的字符串结束。
3.boolean startsWith(String prefix) ,判断当前字符串是否以指定的字符串开始。
4.boolean startsWith(String prefix,int toffset),判断当前字符串是否以从某位开始以指定的前缀开始。
5.boolean equals(Object anObject),判断当前字符串内容是否与指定字符串内容一致。
6.boolean equalsIgnoreCase(String anotherString),忽略大小写判断当前字符串与指定字符串是否一致。
7.boolean isEmpty(),判断当前字符串是否为空。


字符串练习:
1.模拟一个trim方法,去除字符串两端的空格。
功能实现:
private static String trim(String string)
{
 int start = 0,end = string.length()-1;
 while(string.charAt(start) == ' ')
  start++;
 while(string.charAt(end) == ' ')
  end--;
 return string.substring(start, end+1);
}

2.将字符串中指定的部分进行反转。
功能实现:
private static void reverseString(String string,int start,int end)
{
 char[] chs = string.toCharArray();
 for(int i=start; i<(start+end)/2; i++)
 {
  swap(chs,i,end+start-i-1);
 }
 System.out.println(String.valueOf(chs, 0, string.length()));
}

private static void swap(char[] chs,int i,int j)
{
 char temp = chs[i];
 chs[i] = chs[j];
 chs[j] = temp;
}
 

3.获取一个字符串在另一个字符串中出现的次数。
功能实现:
private static int substringCount(String source,String substring)
{
 int index = 0;
 int count = 0;
 while((index = source.indexOf(substring, index)) != -1)
 {
  index = index+substring.length();
  count++;
 }
 return count;
}

4.获取两个字符串中最大相同子串。
功能实现:
private static String getMaxSubString(String string1,String string2)
{
 String subString=null;
 for(int i=0; i<string2.length(); i++)
 {
  for(int j=0,k=string2.length()-i; k != string2.length()+1; j++,k++)
  {
   subString = string2.substring(j,k);
   if(string1.contains(subString))
    return subString;
  }
 }
 return "";
}


StringBuffer:是一个线程同步的字符串缓冲区。
1.StringBuffer可以对字符串内容进行增删。
2.StringBuffer是一个容器。
3.StringBuffer是可变长度的。
4.可以操作多个数据类型。

常见方法:

存储:
1.StringBuffer append(),
 
删除:
1.StringBuffer delete(int start, int end),删除缓冲区中指定区间的数据。
2.StringBuffer deleteCharAt(int index)  ,删除指定位置处的的一个数据。

获取:
1.int indexOf(String str),
2.int lastIndexOf(String str),
3.int length(),
4.String substring(int start,int end),

修改:
1.StringBuffer replace(int start, int end, String str),将指定区间的数据替换成指定字符串。
2.StringBuffer reverse() ,将数据序列进行反转。
3.void setCharAt(int index,char ch),将指定位置处数据替换成指定字符。


StringBuilder:与StringBuffer的区别在于StringBuilder是线程不同步的,在单线程情况下,StringBuilder比StringBuffer效率要高,要快。
它所封装的方法与StringBuffer基本一致。

基本数据类型的包装类:

基本数据类型   包装类
byte:         Byte
short:        Short
int:          Int
long:         Long
boolean:      Boolean
float:        Float
double:       Double
char:        Char

基本数据类型对象包装类的常见作用就是用于在基本数据类型和字符串系列之间做转换。

字符串转换成基本数据类型:
包装类.parse包装类名(String str).其中必须传入数字格式的字符串。

JDK1.5版本以后出现的新特性:
自动装箱:
例如:Integer x = 4; //此处编译器自动将基本数据4封装成一个Integer对象

自动拆箱:
例如:Integer x = 2; x = x+2; //此处将Integer对象x自动拆箱为基本数据2并和2相加,在进行自动装箱操作。


正则表达式:

1.所搜包含指定字符串-例如"cat"的字符串。它对大小写不是很敏感。
正则表达式:cat 
匹配:cat,Cat,catlog.....

2.句点符号。
如匹配所有以't'开头和'n'结尾的包含三个字母的字符串,可以用'.'通配符(匹配除“\n”之外的任何单个字符。)替代中间一个字母。
正则表达式:t.n
匹配:tan,ten,tin.....

3.方括号符号:
可以在方括号("[]")里放入你需要取得的字符的集合。如上例:
正则表达式:t.[aeo].n
匹配:tan,ten,ton,但不能匹配tpn。

4.“或符号”
如上例,还想匹配"toon",可以用或符号('|')来匹配:
正则表达式:t.[a|e|o|oo].n

5.表示匹配次数的符号:
*: 0或者多次
+: 1或者多次
?: 0或者一次
{n}: 恰好n次
{n,m}:从n到m次

6.转义字符'\':
例如要匹配格式为999-99-9999的字符串,连接字符('-')有着特殊的意义,此时要用'\'加以标识:
正则表达式:[0-9]{3} \- [0-9]{2} \- [0-9]{4}
如果理解符号“-”并不是必须的,可以用数量限定符号'?'加以标识:
正则表达式:[0-9]{3} \-? [0-9]{2} \-? [0-9]{4}

7.两个特殊的符号'^'和'$'。他们的作用是分别指出一个字符串的开始和结束
例如"^abc"匹配所有以"abc"开头的字符串:abcd,abckhtiu。
abc$匹配所有以"abc"结尾的字符串:sdghabc,gsdfghkabc。


\d:数字字符匹配。等效于 [0-9]。
\D:非数字字符匹配。等效于 [^0-9]。
\f:换页符匹配。等效于 \x0c 和 \cL。
\n:换行符匹配。等效于 \x0a 和 \cJ。
\r:匹配一个回车符。等效于 \x0d 和 \cM。
\s:匹配任何空白字符,包括空格、制表符、换页符等。与 [ \f\n\r\t\v] 等效。
\S:匹配任何非空白字符。与 [^ \f\n\r\t\v] 等效。
\t:制表符匹配。与 \x09 和 \cI 等效。
\w:匹配任何字类字符,包括下划线。与“[A-Za-z0-9_]”等效。
\W:与任何非单词字符匹配。与“[^A-Za-z0-9_]”等效。
\num:匹配 num,此处的 num 是一个正整数。到捕获匹配的反向引用。例如,“(.)\1”匹配两个连续的相同字符。


练习:
只能输入有两位小数的正实数:              "^[0-9]+(.[0-9]{2})?$"
只能输入长度为3的字符:                  "^.{3}$"
只能输入由26个字母组成的字符串:           "^[A-Za-z]+$"
只能输入汉字:                          "^[\u4e00-\u9fa5]{0,}$"
验证email地址:                         "^w+([-+.]\w)*@\w+([-.]\w)*\.\w+([-.]\w)*$"
验证身份证号(15或18位数字):              "^\d{15}|\d{18}"
验证一年的12个月:                      "^(0?[1-9]|1[0-2])"
ip地址:                               "/(\d+)\.(\d+)\.(\d+)\.(\d+)/g"
匹配任意重复4次的数字:                  "^(\d)\1{3}$"


---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------详细请查看:www.itheima.com

0 0
原创粉丝点击