常用实用类例题2

正则表达式

判断用户从键盘输入得字符序列是否由英文字母,数字或下划线所组成

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值