Java String类的相关操作
一.如何遍历字符串
//法一
String str="hello world";
for(int i=0;i<str.length();i++)
{
char ch=str.charAt(i);//以字符的方式遍历字符串
}
//法二
String str="hello world";
for(char ch :str.toCharArray)
{
...
}
二.关于字母的操作
char ch='t';
if(Character.isLetter(ch))//判断是否为字母
{
if(Character.isUpperCase(ch))//判断是否为大写字母
{
//将大写字母转换为小写字母
//法一:
ch=Character.toLowerCase(ch);
//法二:
//ch=(char)(ch-'A'+'a');//注意此处需要用强制转换类型将int型转换为char类型
}
if(Character.isLowerCase(ch))//判断是否为小写字母
{
//法一:
//ch=Character.toUpperCase(ch);
//法二:
ch=(char)(ch-'a'+'A');//将小写字母转换为大写字母,注意此处需要用强制转换类型将int型转换为char类型
}
}
if(Character.isWhitespace(ch));//判断是否为空格
if(Character.isDigit(ch));//判断是否为数字型字符
三.字符串的拼接
String str1="hello";
String str2=" world";
String str3=str1+str2;//直接用加法即可将字符串进行拼接
四.字符串与字符的相互转换
字符串转字符
- 使用
String.charAt(index)
(返回值为char)可以得到String中某一指定位置的char。 - 使用
String.toCharArray()
(返回值为char[])可以得到将包含整个String的char数组。这样我们就能够使用从0开始的位置索引来访问string中的任意位置的元素。
字符转字符串
//字符转字符串
char ch='t';
char ch1[4]="thing";
String str=String.valueOf(ch);//最为简单
String str=String.valueOf(ch1);//将一个char数组转为String类型
String str=Character.toString(ch);//这个方法实际上直接返回String.valueOf(char)
String str=new Character(ch).toString();
String str=""+ch;
// 虽然这个方法很简单,但效率最低,Java中的String Object的值实际上是不可变的,是一个final的变量。
// 所以我们每次对String做出任何改变,都是初始化了一个全新的String Object并将原来的变量指向了这个新String。
// 而Java对使用+运算符处理String相加进行了方法重载。
// 字符串直接相加连接实际上调用了如下方法:
// new StringBuilder().append("").append('c').toString();
String str=new String(new char[]{ch});//利用Sting类的有参构造函数
五.字符串的逆转
String str1="hello";
String str2=new StringBuffer(str1.reverse().toString());//得到的str2即为str1的逆转后的字符串
六.字符串的替换(有时可以用此方法从字符串里删除一部分字符串)
-
public String replace(char oldChar, char newChar)//用字符newChar替换当前字符串中所有的oldChar字符,并返回一个新的字符串。
-
public String replaceFirst(String regex, String replacement)//该方法用字符replacement的内容替换当前字符串中遇到的第一个和字符串regex相匹配的子串,应将新的字符串返回。
-
public String replaceAll(String regex, String replacement)//该方法用字符replacement的内容替换当前字符串中遇到的所有和字符串regex相匹配的子串,应将新的字符串返回。
String str = "asdzxcasd";
String str1 = str.replace('h','t');//换单个的字符,str1="tello tello"
String str2 = str.replace("asd","fgh");//换字符串,str2 = "fghzxcfgh"
String str3 = str.replaceFirst("asd","fgh");//换第一个与方法中第二个参数匹配的部分str3 = "fghzxcasd"
String str4 = str.replaceAll("asd","fgh");//换所有匹配的字符串,str4 = "fghzxcfgh"
String str5 = str.replace("asd","");//这样即可删除某个字符串中的出现的另一个字符串
七.关于java中命令行参数的处理
java程序的入口为main方法, main方法可以接受一个命令行参数, 它是一个String[]数组,这个命令行参数由JVM接受用户输入并传给main方法:
public class Main
{
public static void main(String[] args)
{
for(String arg: args)//命令行参数的遍历
{
System.out.println(arg);//对命令行参数进行相关的操作
}
}
}
八.判断一个字符串是否包括另一个字符串
String str1="hello hello";
String str2="hello";
if(str1.contain(str2)){}//表示str1里是否包含str2
//对于这个方法还可用于删除元素时判断是否还有某元素
九.如何统计一个字符串中给定字符串出现的频率
-
看其是否包含给定字符串
- 如果不包含则直接输出0
- 如果包含则利用replace删除包含的部分
-
再通过删除部分的长度除以给定字符串的长度,即为该字符串中出现给定字符串的频率
-
需要注意的是需要提前备份原字符串以及原字符串的长度
import java.util.*;
public class Main
{
public static void main(String[] args)
{
Scanner in=new Scanner(System.in);
String s9=in.nextLine();
String s10=in.nextLine();
String s11=s9;
int old_length=s9.length();
String replace="";
if(s9.contains(s10))
{
replace=s9.replaceAll(s10, "");
int new_length=replace.length();
int count=(old_length-new_length)/(s10.length());
System.out.println(count);
}
else System.out.println(0);
s9=s10;
in.close();
}
}
十.如何在字符串中插入字符串
//在字符串中间某个位置插入字符串
String str1="hello";
StringBuilder str2=new StringBuilder(str1);
str2.insert(2,",");//表示在下标为2的前面插入",",即str1="he,llo"
str1=str2.toString();
//在字符串后面插入字符串
String str="hello";
StringBuffer str2=new StringBuffer(str);
str2.append("world");//在后面加上world
String str3=str2.toString();
十一.如何判断字符串相等
String name="xiaoming";
if(name.equals("xiaoming"));