java中String类常用方法的使用与实例

String类中提供了丰富的用于操作字符串的方法。

1、int indexOf(String str)
该方法用于返回当给定字符串在当前字符串中的位置,若当前字符串不包含给定字符串则返回-1。
重载的方法
int indexOf(String str,int formIndex),从指定下标处(包含)查询子串,返回返回当给定字符串在当前字符串中的位置,若当前字符串不包含给定字符串则返回-1。
相关的方法
int lastIndexOf(String str),该方法用于返回子字符串在该字符串中最后一次出现的下标。


/**
	 * int indexOf(String str)
	 * 返回当给定字符串在当前字符串中的位置
	 * 若当前字符串不包含给定字符串则返回-1
	 * 重载的方法
	 * int indexOf(String str,int formIndex)
	 * @author zc
	 */
	@Test
	public void testIndexOf(){
		//          0123456789012345 
		String str="thinking in java";
		//查找in
		int index=str.indexOf("in");
		System.out.println(index);//2
		int index2=str.indexOf("ja");
		int index3=str.indexOf("java");
		System.out.println(index2);//12
		System.out.println(index3);//12
		if(str.indexOf("java")!=-1){
			String str2=str.replace("ja","jaaa");//thinking in jaaava
			System.out.println(str2);
		}
		//重载 indexOf(str,包含的起始下标),下标可越界
		int index4=str.indexOf("ja",16);
		System.out.println("重载的indexOf:"+index4);
		//lastIndexOf()
		int index5=str.lastIndexOf("i");
		System.out.println("最后一个i的下标:"+index5);
	}

2、String substring(int start,int end)
截取字符串,传入的两个参数分别为要截取边界的下标。
在java api 中,通常使用两个数字表示范围时,都是含头不含尾,即包含起始下标对应的内容,但不包含结束下标的处对应的内容。


public static void main(String[] args) {
              //使用该方法截取域名			
		String str="http://www.abcde.cn";
		String name=str.substring(11,15);
		System.out.println(name);
		
		//重载  substring(int index):从该下标到结束
		name=str.substring(11);
		System.out.println(name);
		
		//截取域名
		int point=str.indexOf(".");
		int end=str.lastIndexOf(".");
		String name1=str.substring(point+1,end);
		System.out.println(name1);
	}
	
	@Test
	public void test01(){
		String str2="http://www.abc.com.cn";
		int start=str2.indexOf(".")+1;
		int end=str2.indexOf(".",start);
		String name=str2.substring(start,end);
		System.out.println(name);
	}

3、String trim()
去除一个字符串两边的空白字符(如空格,tab)


//charAt:通过位置 获取内容
String str="abcdef";
char c=str.charAt(2);
System.out.println(c);

4、boolean startWith(String str)
      boolean endWith(String str)

判断当前字符串是否是以给定的字符串开始或结束的


public static void main(String[] args) {
//使用这两个方法判断是否是图片
               String str="zhangc.jpg";
		boolean starts=str.startsWith("zh");
		boolean end=str.endsWith(".jpg");
		System.out.println(starts);
		System.out.println(end);
	}

5、String toUpperCase()
      String toLowerCase()

将当前字符串中的英文部分转换为全大写或全小写


public static void main(String[] args) {
		String str="Hellow World";
		str=str.toUpperCase();
		System.out.println(str);
		str=str.toLowerCase();
		System.out.println(str);
	}

6、static String valueOf()
String 提供了若干的静态重载的方法valueOf,可以将java中的其他类型转换为字符串类型
常用于将基本类型转换为字符串类型


public static void main(String[] args) {
		int a=123;
		//valueOf()性能好一点
		String str=String.valueOf(a);
		System.out.println(str);
		double d=123.123;
		String str2=String.valueOf(d);
		//方法2,也可以将一个基本数据类型的数据转成String类型的变量
		String str3=1234f+"";
		System.out.println(str3);
	}

7、以下为检索某个字符在一个字符串中出现的所有下标的程序

可以使用charAt方法或intdexOf实现

/**
 * 分别使用charAt()和indexOf()实现检索一个字符串中所有字符b出现的下标
 * @author zc
 */
public class TCharAt {
	public static void main(String[] args) {
		String s="abcbcdbcgdgscbbvfb";
		for(int i=0;i<s.length();i++){
			if('b'==s.charAt(i)){
				System.out.println(i);
			}
		}
	}
	
	@Test
	public void test01(){
		String s="abcbcdbcgdgscbbvfb";
		int from=0;
		for(int i=0;i<s.length();i++){
			int index=s.indexOf("b", from);
			System.out.println(index);
			from=index+1;
			if(from>=s.length()){
				break;
			}
		}
	}
}

8、String[] split(String regex)
将当前字符串按照满足正则表达式的部分进行拆分

然后将所有拆分后的部分返回


public static void main(String[] args){
		String str="abc123def456ghi789jkl";
		//按照数字部分拆分字符串
		String[] result=str.split("\\d+");//最大匹配
		System.out.println(result.length);//4
		for(int i=0;i<result.length;i++){
			System.out.println(result[i]);
		}
	}
	@Test
	public void test02(){
		//字符串如果是末尾能够匹配上,所有末尾的  空  字符串会被忽略,切分的正则表达式应满足最大匹配
		String str="abc123def456ghi789jkl12313233";
		String[] result=str.split("\\d");
		for(int i=0;i<result.length;i++){
			System.out.println(result[i]);
		}
		System.out.println("len:"+result.length);//10,末尾的数字切分出来的   空   字符串会被忽略
		
		String str2="233abc123def456ghi789jk";
		String[] result2=str2.split("\\d");
		for(int i=0;i<result2.length;i++){
			System.out.println(result2[i]);
		}
		System.out.println("len:"+result2.length);//13
	}

9、String replaceAll(String regex,String str)
将当前字符串中满足正则表达式的部分替换为给定的字符串内容


public static void main(String[] args) {
		String str="abc123def456ghi789jkl";
		/*
		 * 将当前字符串中的数字部分替换为"#NUMBER"
		 * */
		str=str.replaceAll("\\d","#NUMBER");
		System.out.println(str);
		
		str="abc123def456ghi789jkl";
		
		/**
		 * 将英文部分替换为#CHAR#
		 * */
		str=str.replaceAll("[a-zA-Z]+","#CHAR#");
		System.out.println(str);
		
		str=str.replaceAll("\\d+","#NUMBER");
		System.out.println(str);
	}

10、下面是我写的移除字符串中所有空格的两个方法


/**
 * 删除字符串中的所有空格
 * @author zc
 */
public class T11RemoveAllSpace {
	public static void main(String[] args) {
                String s="  ab  cdf dfd   dfsf  dsfdsfe   dsfdsfsfg  ";
		s=s.trim();
		String[] eachs=s.split("\\s+");
		StringBuilder builder=new StringBuilder();
		for(int i=0;i<eachs.length;i++){
			builder.append(eachs[i]);
		}
		s=builder.toString();
		System.out.println(s);
	}
	//这种方法简单
	@Test
	public void test01(){
               String s="  ab  cdf dfd   dfsf  dsfdsfe   dsfdsfsfg  ";
		s=s.replaceAll("\\s+","");
		System.out.println(s);
	}
}

猜你喜欢

转载自blog.csdn.net/AlbenXie/article/details/81264304