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, ""));
}