正则表达式
判断用户从键盘输入得字符序列是否由英文字母,数字或下划线所组成
import java.util.Scanner;
public class exam {
public static void main(String[] args) {
String regex="[a-zA-Z|0-9|_]+";
Scanner scanner =new Scanner(System.in);
String str=scanner.nextLine();
if(str.matches(regex)){
System.out.println(str+"是由英文字母,数字或下划线构成");
}
else{
System.out.println(str+"中有非法字符");
}
}
}
字符串得替换
replaceAll()方法
import java.util.Scanner;
public class exam {
public static void main(String[] args) {
String str="欢迎大家访问http://www.xiaojiang.cn了解,参观公司";
String regex="(http://|www)\56?\\w+\56{1}\\w+\56{1}\\p{Alpha}+";
System.out.printf("替换\n\"%s\"\n中得网站链接信息后得到得字符串\n",str);
str=str.replaceAll(regex, "******");
System.out.println(str);
String money="89,235,647¥";
System.out.print(money+"转化成数字");
String s =money.replaceAll("[,\\p{Sc}]", "");// "\\p{Sc}"可匹配任何货币符号
long number=Long.parseLong(s);
System.out.println(number);
}
}
字符序列的分解
import java.util.Scanner;
public class exam {
public static void main(String[] args) {
System.out.println("一行文本");
Scanner reader=new Scanner(System.in);
String str =reader.nextLine();
//regex匹配由空格,数字和!"#$%&()*+_./:<=>?@[\]^_'{|}~组成的字符序列
String regex="[\\s\\d\\p{Punct}]+";
String words[]=str.split(regex);
for(int i=0;i<words.length;i++){
int m=i+1;
System.out.println("单词"+m+":"+words[i]);
}
}
}
StringTokenizer类
import java.util.*;
public class PriceToken {
public double getPriceSum(String shoppingReceipt) {
String regex="[^0123456789.]+"; //匹配非数字字符序列
shoppingReceipt=shoppingReceipt.replaceAll(regex, "#");
StringTokenizer fenxi=new StringTokenizer(shoppingReceipt, "#");
double sum=0;
while(fenxi.hasMoreTokens()){
String item=fenxi.nextToken();
double price=Double.parseDouble(item);
sum=sum+price;
}
return sum;
}
public double getAverPrice(String shoppingReceipt) {
double priceSum=getPriceSum(shoppingReceipt);
int goodsAmount=getGoodsAmount(shoppingReceipt);
return priceSum/goodsAmount;
}
public int getGoodsAmount(String shoppingReceipt) {
String regex="[^0123456789.]+"; //匹配非数字字符序列
shoppingReceipt=shoppingReceipt.replaceAll(regex, "#");
StringTokenizer fenxi=new StringTokenizer(shoppingReceipt, "#");
int amount=fenxi.countTokens();
return amount;
}
}
import java.util.*;
public class exam {
public static void main(String[] args) {
String shoppingReceipt="牛奶:8.5元,香蕉3.6元,酱油:2.8元";
PriceToken lookPriceMess=new PriceToken();
System.out.println(shoppingReceipt);
double sum=lookPriceMess.getPriceSum(shoppingReceipt);
System.out.printf("购物总价格%-7.2f",sum);
int amount=lookPriceMess.getGoodsAmount(shoppingReceipt);
double aver=lookPriceMess.getAverPrice(shoppingReceipt);
System.out.printf("\n商品数目:%d,平均价格:%-7.2f",amount,aver);
}
}
Scanner类
import java.util.*;
public class GetPrice {
public static double givePriceSum(String cost) { //static方法,类名可以调用
Scanner scanner=new Scanner(System.in);
scanner.useDelimiter("[^0123456789.]+"); //Scanner设置分隔标志
double sum=0;
while(scanner.hasNext()){
try {
double price=scanner.nextDouble();
sum=sum+=price;
}
catch (InputMismatchException exp) {
String t=scanner.next();
}
}
return sum;
}
}
public class exam {
public static void main(String[] args) {
String cost="市话76.8元,长途:167.38元,短信12.68元";
double priceSum=GetPrice.givePriceSum(cost);
System.out.printf("%s\n总价:%.2f元\n",cost,priceSum);
cost="牛奶:8.5元,香蕉3.6元,酱油:2.8元";
priceSum=GetPrice.givePriceSum(cost);
System.out.printf("%s\n总价:%.2f元\n",cost,priceSum);
}
}
StringBuffer类的常用方法
public class exam {
public static void main(String[] args) {
StringBuffer str=new StringBuffer();
str.append("大家好");
System.out.println("str:"+str);
System.err.println("length:"+str.length());
System.out.println("capacity:"+str.capacity());
str.setCharAt(0, 'w');
str.setCharAt(1, 'e');
System.out.println(str);
str.insert(2, " are all");
System.out.println(str);
int index=str.indexOf("好");
str.replace(index, str.length(),"right");
System.out.println(str);
}
}