String类及正则表达式

前端之家收集整理的这篇文章主要介绍了String类及正则表达式前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

@H_404_3@ Java升级:提高效率,简化书写,提高安全性
@H_404_3@ String:字符串常量存在于方法区的常量池中
@H_404_3@ 一、获取
@H_404_3@
int length()获取字符串长度
char charAt()根据位置获取某个字符,没有找到返回-1,超出索引范围,返回异常
int indexOf(int ch)返回ch在字符串第一次出现的位置
int indexOf(int ch,int fromIndex)从fromIndex指定的位置开始,ch在字符串中出现的位置
int indexOf(String str)返回str在字符串第一次出现的位置
int indexOf(String str,int fromIndex)从fromIndex指定的位置开始,str在字符串中出现的位置
二、判断
boolean contains(str)是否包含一个子串
indexOf(str)不包含返回-1,也可以用来判断
boolean isEmpty()字符串是否有内容,原理是判断字符串长度是否为0
boolean startsWith(str)是否以指定内容开头
boolean endsWith(str)是否以指定内容结尾
boolean equals(str)判断字符串内容是否相同
boolean equalsIgnoreCase();忽略大小写判断内容是否相同
三、转换:字符串和字节数组在转换过程中可以指定编码
@H_404_3@
3.1将字符数组转成字符串
构造函数:String(char[])
		  String(char[],int offset,int count)将字符数组中的一部分转成字符串
静态方法
static String copyValueOf(char[])
static String copyValueOf(char[],int count)
static String valueOf(char[])
3.2将字符串转换成字符数组
char[] tocharArray()
3.3将字节数组转成字符串
		 String(byte[])
		 String(byte[],int count)
3.4将字符串转成字节数组
	byte[] getBytes();
3.5将基本数据类型转成字符串
static String valueOf(int)
static String valueOf(double)
3+""  ---  String.valueOf(3)
四、替换
String replace(char,char);
String replace(CharSequence target,CharSequence replacement)
五、切割
String[] split(regex);
六、子串:获取字符串中的一部分
String substring(int begin);超出范围抛异常
String substring(int begin,ine end )
七、转换,除去空格,比较
 7.1转换字符串大小写
	String toUpperCase();String toLowerCase()
 7.2去除字符串两端空格
	String trim();
        String trimString(String str){
		int src = 0,end = str.length()-1;
		//从0依次判断是否为空格,不是空格就停止循环,开始角标小于末尾角标
		while((src<end)&&(str.charAt(src)==' '))
			src++;
		//从后向前判断是否为空格
		while((src<end)(str.charAt(end)==' '))
			end--;
		//截取子串,包含头不包含尾,end+1
		return str.subString(src,end+1);
	}
 7.3对两个字符串进行自然顺序的比较
	int compareTo(String);
   <span style="color:#ff6666;">获取两个字符串的最大相同子串</span>:
	String getMaxString(String s1,String s2){
		//遍历整个小的字符串
		for(int i=0;i<s2.length();i++){
		//能获得全部的子串就可以判断
			for(int x=0,y=s2.length-0;y!=s2.length()+1;x++,y++){
				String temp = s2.substring(x,y);
				if(s1.contains(temp))
				return temp;
			}
		}
		return null;
	}
StringBuffer容器
1,长度可变化
2,可以字节操作多个数据类型
@H_404_3@ 3,最终通过toString编程字符串
C create U update R read D delete
1,存储
	StringBuffer append():将指定数据添加到末尾
	StringBuffer insert(index,数据):数据插到指定位置
2,删除
	StringBuffer delete(start,end):删除缓冲区中指定数据,包含头不包含尾清空--delete(0,length())
	StringBuffer deleteCharAt():删除指定位置的字符
3,获取
	char charAt(int index) int indexOf(String str) int lastIndexOf(String str)
	int length() String substring(int start,int end)
4,修改
	StringBuffer replace(start,end string)
	void setCharAt(int index,char ch)
StringBuffer反转
@H_404_3@ StringBuffer reverse()
@H_404_3@
	String reverseString(String str,int src,int end){
		//将字符串变成字符数组
		char[]  ch = str.tocharArray();
		//反转字符数组
		reverseChar(ch,src,end);
		//将字符数组变成字符串
		return new String(ch);
	}
	void reverseChar(char[] ch,int end){
		char temp = ' ';
		//交换前后两个对应的字符
		for(;src<end;src++,end--){
			temp = ch[src];
			ch[src] = ch[end];
			ch[end] = temp;
		}
	}
将缓冲区中的指定数据存储到指定的字符数组中
void getChars(int srcBegin,int srcEnd,char[] det,int detbegin)

StringBuffer 线程同步 StringBuilder(单线程用,速度快,提高效率) 线程不同步
基本数据类型和字符串转换

@H_404_3@
基本数据类型转字符串:基本数据类型+"" , 基本数据类型.toString(基本数据类型值)
	字符串转成基本数据类型:
		xxx a=Xxx.parseXxx(String);String必须是要转换的数据格式
		int a=Integer.parseInt("123");
		boolean b=Boolean.parseBoolean("true");
		
		Integer i = new Integer("123");
		int num = i.inValue();

十进制转成其他进制
		toBinaryString();toHexString();toOctalString();
其他进制转成十进制
		parseInt(string,radix);<strong>
</strong>
=================================================================================== @H_404_3@ 正则表达式:符合一定规则的表达式,操作字符串
特点:用一些特定的符号表示一些代码操作,简化书写
一、匹配:String matches(),用规则匹配整个字符串,只有有一处不符合规则就匹配结束返回false
@H_404_3@
<span style="white-space:pre">	</span>一个位上的字符:[a-z],[a-zA-Z],[a-d[m-p]],[^a-z],[0-9]
	预定义字符:"."任意字符,\d,0-9的数字 \D非数字 \w,单词字符[a-zA-Z_0-9]\W非单词
	数量词:? 0次或者1次 * 0次或多次 + 一次或多次 {n}恰好n次 {n,}至少n次 {n,m}n-m次
二、切割 String split() @H_404_3@
注意:正则表达式中使用"\\"一个只是转义字符
	// . 为特殊字符
	String str  = "abc.cde.efg";String[] arr = str.split("\\.");
	组的概念:为了让规则得到重用,用()将规则封装成组,组的出现否有编号
	从1开始,使用已有的组通过\n(n为组的编号,最左边括号的次序)的形式获取
	//分隔叠词,\\1使用第一个组,+出现1次或者多次
	"abccdeffffghiij".split("(.)\\1+");
三、替换 String replaceAll()
	$:获得前一个规则中的组,$n,n表示组的编号
	//将叠词换成单个字符
	"abccdeffffghiij".replaceAll("(.)\\1+","$1");
四、 获取
(1)将正则表达式封装成对象
(2)让正则对象和要操作的字符串相关联
(3)关联后,获取正则匹配的引擎
(4)通过引擎对符合规则的子串进行操作 @H_404_3@
	import java.util.regex.*;
	String str = "";
	String regex = "\\b[a-z]{3}";//  \\b为单词边界
	//将规则封装成对象
	Pattern p = Pattern.compile(regex);
	//让正则对象和要作用的字符串相关类
	Mather m = p.mather(str);
	m.matches();//String 的matches对此进行了封装
	//将规则作用于字符串,并进行符合规则的子串查找,记录位置向后查找
	while(m.find()){//先找再取
		m.group();//获取匹配后的结果
		m.start();//匹配子串的开始位置,m.end(),结束位置
	}

猜你在找的正则表达式相关文章