串的简单处理正则表达式 应用

题目要求:

串的处理
在实际的开发工作中,对字符串的处理是最常见的编程任务。本题目即是要求程序对用户输入的串进行处理。具体规则如下:
1. 把每个单词的首字母变为大写。
2. 把数字与字母之间用下划线字符(_)分开,使得更清晰
3. 把单词中间有多个空格的调整为1个空格。


例如:
用户输入:
you and me what cpp2005program
则程序输出
You And Me What Cpp_2005_program


用户输入:
this is a 99cat
则程序输出
This Is A 99_cat


我们假设:用户输入的串中只有小写字母,空格和数字,不含其它的字母或符号。每个单词间由1个或多个空格分隔。
假设用户输入的串长度不超过200个字符。


代码


/*
 * 串的简单处理
 */
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main 
{
	
	public static void main(String[] args) 
	{
    Scanner in=new Scanner(system.in);
    String str=in.nextLine();
    String []ss=str.split("[\\s]+");//“,\\s*|\\s+”是正则的表达式,\s表示空格,应该是以空格开头或结尾都会被截取到。
    
    for(int i=0;i<ss.length;i++)
    {
    	String up=(""+ss[i].charat(0)).toupperCase();//首字母大写
    	StringBuffer sb=new StringBuffer(ss[i]);
    	ss[i]=sb.replace(0,1,up).toString();
    	Matcher m=Pattern.compile("\\d+").matcher(ss[i]);
    	while(m.find())
    	{
    		String num=new String(m.group());
    		String num2=num;
    		num2="_"+num+"_";//数字前加“——”
    		ss[i]=ss[i].replace(num,num2);//替换字符串
    		
    		if(ss[i].startsWith("_"))//去掉头部
    		{
    		 ss[i]=ss[i].substring(1);
    		}
    		
    		if(ss[i].endsWith("_"))//去掉尾部
    		{
    	          ss[i]=ss[i].substring(0,ss[i].length()-1);//得到字符串中的子串    
    		}
    	}
    	
    }
    
    print(ss);
    
	}

	public  static void print(String[]s) 
	{
	 for(int i=0;i<s.length-1;i++)
	 {
		 System.out.print(s[i]+" ");
	 }
	 System.out.println(s[s.length-1]);
	 
	}

} 

相关文章

正则替换html代码中img标签的src值在开发富文本信息在移动端...
正则表达式
AWK是一种处理文本文件的语言,是一个强大的文件分析工具。它...
正则表达式是特殊的字符序列,利用事先定义好的特定字符以及...
Python界一名小学生,热心分享编程学习。
收集整理每周优质开发者内容,包括、、等方面。每周五定期发...