java笔记-字符串操作


String类用于描述字符串事物,该类提供了多个方法对字符串进行操作。

字符串的常见操作:

1.获取

1.1字符串的长度:

int length();获取字符串的长度。

1.2获取具体位置的字符。

char charAt(int inex);

1.3根据字符获取该字符在字符串中的位置。

int indexOf(int ch);返回ch在字符串中第一次出现的位置;

int indexOf(int ch,int fromIndex);从fromIndex开始查找ch字符,并返回ch字符在字符串中的位置。

int indexOf(String str);返回字符串str在字符串中第一次出现的位置。

int indexOf(String str,int fromIndex);从fromIndex开始查找,返回str在字符串中的位置。

int lastIndexOf(int ch);从后向前查找,返回ch在字符串中最后出现的位置。

2.判断

2.1字符串中是否包含一个子串。

boolean contains(str);

2.2字符串中是否有内容。

boolean isEmpty();原理:判断字符串是否为0。

2.3字符串是否以指定内容开头。

boolean startsWith(str);

2.4字符串是否以指定内容结尾。

boolean endsWith(str);

2.5判断字符串内容是否相同。

boolean equals(str);

2.6判断字符串内容是否相同,并忽略大小写。

boolean equalsIgnoreCase();

3.转换

3.1将字符数组转成字符串。

构造函数:String(char[]);

    String(char[],offset,count);将字符数组中的一部分转成字符串。

静态方法:static String copyValueOf(char[]);

    static String copyValueOf(char[],offset,count);

    static String valueOf(char[]);

3.2将字符串转成字符数组。

char[] toCharArray();

3.3将字节数组转成字符串。

String(byte[]);

String(byte[],offset,count);

3.4将字符串转成字节数组。

byte[] getBytes();

3.5将基本数据类型转化为字符串。

static String valueOf(int);

static String valueOf(double);

String.vaulue(3);

4.替换

String replace(char oldchar,char newchar);

5.切割

String[] split(regex);

6.子串

String substring(begin);

String substring(begin,end);//包含begin,不包含end

7.转换,去除空格,比较

7.1字符串大小写转换。

String toUpperCase();

String toLowerCase();

7.2将字符串两端的空格除去。

String trim();

7.3对两个字符串进行自然顺序的比较。

int compareTo(String);

String操作实例

class StringChar{
	//去除字符串两端的空格
	public String trimCh(String str){
		int start=0,end=str.length()-1;
		while((start<=end)&&(str.charAt(start)==' '))
			start++;
		while((start<=end)&&(str.charAt(end)==' '))
			end--;
		//substring()获得的是从start开始到end前(end-1)中间的字符串。
		return str.substring(start,end+1);
	}
	//反转字符串。
	public String reverseString(String str){
		//将字符串转化为字符数组;
		char[] chs=str.toCharArray();
		//将字符数组反转;
		swap(chs);
		//将字符数组转化为字符串;
		return new String(chs);
	}
	public void swap(char[] chs){
		for(int start=0,end=chs.length-1;start<end;start++,end--){
			char temp=chs[start];
			chs[start]=chs[end];
			chs[end]=temp;
		}
	}
	//查找子字符串出现的次数;
	public int getSubCount(String str,String key){
		int count=0;
		int index=0;
		//反复从index处开始查找key。
		while((index=str.indexOf(key,index))!=-1){
			count++;
			//根据规律,index的值变化规律。
			index=index+key.length();
		}
		return count;
	}
	//查找两个字符串中最大相同字符串。
	public String getMaxSubString(String s1,String s2){
		for(int x=0;x<s2.length();x++){
			for(int y=0,z=s2.length()-x;z!=s2.length()+1;y++,z++){
				String temp=s2.substring(y,z);
				if(s1.contains(temp)){
					return temp;
				}
			}
		}
		return "";
	}
}
class TrimDemo{
	public static void sop(String str){
		System.out.println(str);
	}
	public static void main(String[] args){
		sop("去除字符串两端的空格。");
		String s="    hello this world! it is beautifull!    ";
		String ss="   woi weoi who world! weo lsw aw!";
		StringChar sc=new StringChar();
		String s1=sc.trimCh(s);
		sop("("+s+")");
		sop("("+s1+")");
		sop("反转字符串。");
		String rs=sc.reverseString(s);
		sop("("+s+")");
		sop("("+rs+")");
		sop("查找子字符串出现的次数。");
		sop("("+s+")");
		sop("is apear count::"+sc.getSubCount(s,"is"));
		sop("查找两个字符串中出现的最大相同字符串。");
		sop("("+s+")");
		sop("("+ss+")");
		sop("("+sc.getMaxSubString(s,ss)+")");
	}
}

字符缓冲区

stringBuffer 字符串缓冲区
是一个容器,

a.长度可变化。

b.可以直接操作多个数据类型。

c.最终通过toString方法编程字符串。

1.增加

append();insert(index,data);

清空数据缓冲区。

sb.delete(0,sb.length());

2.删除

StringBuffer delete(start,end);删除缓冲区的数据,包含start,不包含end。

StringBuffer deleteCharAt(index);删除指定位置的字符。

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);

5.反转

StringBuffer reverse();

6.指定数据存储到字符串

void getChars(int srcBegin,int srcEnd,char[],int dstBegin);


jdk1.5之后出现stringBuilder.

StringBuffer是多线程,

StringBuilder 是线程不同步。当数据操作为单线程时,该方法效率高。

StringBuilder 用于多个线程是不安全的。以后建议使用StringBuilder。

java升级三个因素:

提高效率;

简化书写;

提高安全性;


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值