1.String的概念:String 不属于Java语法的一部分,而是基于Java语法封装的一个类。

什么是api:application programming interface,应用程序编程接口。java api是指java标准类库提供的函数。

2.常量池的介绍

两种创建字符串的区别:如String s = new String("hello");每次都会在堆中新开辟一块内存,创建一个对象。

如String s = "hello":

在创建字符串的时候,会先在堆中新开辟一块内存,创建一个对象并将其添加到常量池。当下一次创建字符串时,会先查看常量池,

如果常量池中有相同的字符串,则直接指向常量池中的字符串,不会新建。如果常量池中没有,则会先在常量池中新建一个,然后指向它。

3.基本的api介绍:

.length()   : 字符串的长度。

.charAt(index):显示字符串在index位置的字符。

.toCharArray():字符串转换为字符数组。

例:

char[] sc = s.toCharArray();

.toUpperCase():转换为大写。

.toLowerCase():转换为小写。

.equals(Object):判断字符串是否相等。(注:这种判断方法会使两个字符串之重的字符一一比较)

.compareTo(String):比较大小(注:比较方法为一位一位的用每个字符的ASCII码进行比较)

.equalsIgnoreCase(String):判断字符串是否相等并不区分大小写。

.trim():去掉字符串中的空格。

.substring(int):去掉某一位置前的字符得到一个新的字符串。

.substring(int a,int b):指的是截出a开始到b的字符串,包括a的位置不包括b。

.indexOf(int):找出某一字符的位置。

.lastIndexOf(int):找出某一字符最后出现的位置。

.indexOf(int,int):从某一位置开始找某字符出现的位置。(注:第一位指要查找的字符,第二位指要查找的起始位置)

.concat(b):完成字符串的拼接。

a.replace(target, replacement):完成字符或字符串的替换

例如:

String str ="ababababa";
String a =str.replace('a','b');

或对字符串进行替换,例:

String str="iamthatman";
String rep=str.replace("that","this");

4.正则表达式

正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。

pattern普通字符介绍:

[abc]

匹配 [...] 中的所有字符(只选取一个)

 

[^abc]

匹配除了 [...] 中字符的所有字符

[a-z]

[A-Z] 表示一个区间,匹配所有大写字母,[a-z] 表示所有小写字母。

.

匹配除换行符(\n、\r)之外的任何单个字符,相等于 [^\n\r]。

\w

匹配字母、数字、下划线。等价于 [A-Za-z0-9_]

pattern限定符介绍:

*

匹配前面的子表达式零次或多次

+

匹配前面的子表达式一次或多次

匹配前面的子表达式零次或一次

{n}

匹配确定的 n 次。

{n,}

至少匹配n 次

{m,n}

最少匹配 n 次且最多匹配 m 次

下面介绍几种匹配正则表达式的方法:

1).matches(pattern):用来检验字符串是否与pattern匹配,例:

String str ="fjkkjfas";
String pattern="[a-z]+";
boolean f = str.matches(pattern);

2)  .replaceAll(pattern,String):用来替换字符串中能匹配pattern的部分,例:

/*替换掉字符串中的其他部分,
只保留数字。*/
String str ="flfkjsa38338999";
String pattern ="[^0-9]";
System.out.println(str.replaceAll(pattern,""));

3)  .split(pattern):split对字符串以给定的字符进行分隔,得到字符串数组,例:

String str ="热刺,曼城,利物浦";
String pattern ="[,]";
String[] a = str.split(pattern);

5.小练习:1. 判定输入的一个字符串是否全为数字,使用两种方式完成。

1)利用正则表达式:

String a = "413513613";
String pattern = "[0-9]+";
System.out.println(a.matches(pattern));

2)使用循环的方法

@Test
	 void test3() { 
		 String b ="42342342hgffh353643523525";
		 boolean f = true;
		 for (int i = 0; i < b.length(); i++) {
			if ((b.charAt(i)<'0')||(b.charAt(i)>'9')) {
				f=!f;
			}
		}
		 System.out.println(f);	
}

2.输入一个由小写字符组成的字符串,统计出每个字符出现的次数

@Test
	void test() {
		String str = "dasdasfgaahhahakytktkytk";//定义一个字符串
		String Abc = "abcdefghigklmnopqrstuvwxyz";//将26个字母输入一个字符串内
		int [] pos=new int[26];//初始化一个表示第几位字母的数组
		for (int i = 0; i < str.length(); i++) {
			for (int j = 0;j<Abc.length();j++) {
				if (str.charAt(i)==Abc.charAt(j)) {
					pos[j]++;
					break;
				}
			}
		}
		for (int i = 0; i < pos.length; i++) {
			System.out.println(Abc.charAt(i)+"出现的次数:"+pos[i]);
		}
	}

3.对一个字符串进行去除标签字符串。

@Test
	void test() {
		String str ="<h1>这是测试结果</h1><p>test a</p>";  
		String pattern = "(<\\w+>)|(</\\w+>)";
		System.out.println(str.replaceAll(pattern, ""));
		
	}