字符串String & 正则表达式

一. 字符串基础

1. 创建字符串String

1) 使用引号包含文本的方式创建String对象

java虚拟机会在字符串池中查找该对象是否已经存在。如果有,则不再创建新的对象,直接返回已存在对象的引用;如果没有,则先创建这个对象,然后把它加入到字符串池中,再将它的引用返回。

String str = "ab";
String str2 = "ab" + "cd";

2) 使用new方式新建String对象 (包括null)

对于所有包含new方式新建对象的表达式,新建的对象都不会加入字符串池中。

//新建一个空String对象
String str = new String();
//参数为字符串
String str = new String("abc");
//参数为一个字符数组char[]或 字节数组byte[]
char[] arr = {'a','b','c','d','f'}; //把字符数组转变为字符串
String str = new String(arr); 

注:

  • 两个new方式新建的对象,即使它们的字符串内容相同,但由于不是同一个对象,因而使用"=="比较的话,返回结果是false。
  • 所以如果想比较两个字符串内容是否相同的话,要是用equals()方法。例:str1.equals(str2)

 

2. String类中split()方法的使用

public String[] split(String regex){
    // 参数limit默认为0
    return split(regex,0);
}

1)java的split方法实则是调用了重载方法,默认方法参数limit传0。当limit==0时,只有存在的最后的空格会被去掉,在中间和前面的空格都不会被去掉。

2)当limit > 0 时,limit等于字符串要被分割的份数。如果limit > 最大分割份数,字符串只会按照最大的分割数分割;参数limit是整型,不能使用小数。

3)当limit < 0 时,不会去掉任何分割后的字符。

3. 由 基本数据型态 转换成 String 
1)String 类别中提供了将 基本数据型态 转换成 String的 static 方法,也就是String.valueOf() 这个参数多载的方法。 
2)有下列几种: 
String.valueOf(boolean b) : 将 boolean 变量 b 转换成字符串 
String.valueOf(char c) : 将 char 变量 c 转换成字符串 
String.valueOf(char[] data) : 将 char 数组 data 转换成字符串 
String.valueOf(char[] data, int offset, int count) : 
将 char 数组 data 中由 data[offset] 开始取 count 个元素 转换成字符串 
String.valueOf(double d) : 将 double 变量 d 转换成字符串 
String.valueOf(float f) : 将 float 变量 f 转换成字符串 
String.valueOf(int i) : 将 int 变量 i 转换成字符串 
String.valueOf(long l) : 将 long 变量 l 转换成字符串 
String.valueOf(Object obj) : 将 obj 对象转换成 字符串, 等于 obj.toString() 
3)用法如: 

int i = 10; 
String str = String.valueOf(i); 
这时候 str 就会是 "10" 


4. 由 String 转换成 数字的基本数据型态 
1)要将 String 转换成基本数据型态,大多需要使用基本数据型态的包装类别 
比如说 String 转换成 byte,可以使用 Byte.parseByte(String s) 
这一类的方法如果无法将 s 分析 则会丢出 NumberFormatException 

2)例子

byte : 
Byte.parseByte(String s) : 将 s 转换成 byte 
Byte.parseByte(String s, int radix) : 以 radix 为基底 将 s 转换为 byte 
比如说 Byte.parseByte("11", 16) 会得到 17 
double : Double.parseDouble(String s) : 将 s 转换成 double 
float : Double.parseFloat(String s) : 将 s 转换成 float 
int : Integer.parseInt(String s) : 将 s 转换成 int 
long : Long.parseLong(String)

5. String, StringBuffer与StringBuilder的区别

1)String类

在java中字符串属于对象,java提供了String类来创建和操作字符串。String类是不可变类,一旦一个String对象被创建以后,包含在这个对象中的字符序列是不可改变的。

2)StringBuffer & StringBuilder

为了节省内存空间,应对经常性的字符串相关操作,引入两个新的类StringBuffer类与StringBuilder类来对变化的字符串进行处理。

StringBuilder类不是线程安全的 (不能同步访问),但相较于StringBuffer有速度优势。StringBuffer类效率低,但线程安全。两个类的方法都相同。

3)StringBuilder/StringBuffer 常用方法

public StringBuilder append(String s) / append(char c) :将指定字符串/字符添加到此序列

public StringBuffer reverse() :将此字符串用其反转形式取代

public char charAt(int index) :返回序列中指定下标的字符

public StringBuilder delete(int start, int end) :删除起始下标(含) 到结尾下标(不含) 之间的子字符序列

public StringBuilder insert(int offset, String str) :在指定下标插入字符串

public int length() :返回该字符序列的长度

String toString() :返回该字符序列的 字符串

String substring(int start, int end) :返回起始下标(含) 到结尾下标(不含) 之间的子字符串

void setLength(int newLength) :将字符序列设定为指定的长度,当给定参数大于原字符序列的长度时,用空格字符('\u0000')来填充

二. 正则表达式 regex

1. 基本语法

两个特殊字符'^'和'$',分别指出一个字符串的开始和结束。例:

"^The":表示所有以"The"开始的字符串("There","The cat"等);

"of despair$":表示所以以"of despair"结尾的字符串

'*', '+'和'?'这三个符号,分别表示“零个或若干个”,“一个或若干个”还有“零个或一个”。例:

"ab*":表示一个字符串有一个a后面跟着零个或若干个b。("a", "ab", "abbb",……);

"ab+":表示一个字符串有一个a后面跟着至少一个b或者更多;

"ab?":表示一个字符串有一个a后面跟着零个或者一个b;

{ }用大括号表示可以重复次数的范围,必须指定范围的下限。例:

"ab{2}":表示一个字符串有一个a跟着2个b("abb");

"ab{2,}":表示一个字符串有一个a跟着至少2个b;

"ab{3,5}":表示一个字符串有一个a跟着3到5个b。 

'.'可以替代任何字符。例: 

"a.[0-9]":表示一个字符串有一个"a"后面跟着一个任意字符和一个数字

'^'放在方括号里的第一位,表示不希望出现的字符。例:

"%[^a-zA-Z]%"表示两个百分号中不应该出现字母;

'\' 将下一字符标记为特殊字符、文本、反向引用或八进制转义符。

例如,“n”匹配字符“n”。“\n”匹配换行符。序列“\\”匹配“\”,“\(”匹配“(”。

'\d' 匹配一个数字字符。等价于[0-9]。

'\D' 匹配一个非数字字符。等价于[^0-9]。

'\n' 匹配一个换行符。

2. 理解java字符串正则表达式 

  • 正则表达式字符串是Java字符串的输出结果。
  • java中的反斜杠"\"用作字符的转义。例如:java字符串写做"\\\\" ,会被编译器转义为正则表达式"\\",用来匹配字符串中的"\"。
  • 在一些特殊字符 (如“ .、{、[、(、?、$、^ 和 * ”) 前要加双斜杠"\\"来匹配其普通含义。
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值