import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Scanner;public class test { public static void main(String args[]) { Scanner sc = new Scanner(System.in); String str = sc.nextLine(); char[] chars =str.toCharArray(); List<Character> clist = new ArrayList<Character>();
String flagStr ="space";//space,字母litter,数字number for (Character c : chars){ if (c==' ') { if(!flagStr.equals("space")){ clist.add(c); } flagStr="space"; } else if (c.toString().matches("[0-9]")){
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Scanner;public class test {
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
char[] chars =str.toCharArray();
List<Character> clist = new ArrayList<Character>();
String flagStr ="space";//space,字母litter,数字number
for (Character c : chars){
if (c==' ') {
if(!flagStr.equals("space")){
clist.add(c);
}
flagStr="space";
}
else if (c.toString().matches("[0-9]")){
if(flagStr.equals("litter")){
clist.add('_');
}
else if(flagStr.equals("space")){
//判断空格前面是不是字母,如果是把空格换成下划线
if(clist.size()>=2&&clist.get(clist.size()-2).toString().matches("[a-zA-Z]")){
clist.remove(clist.size()-1);
clist.add('_');
}
}
clist.add(c);
flagStr="number";
} else if(c.toString().matches("[a-zA-Z]")){
if(flagStr.equals("space")){
c = Character.toUpperCase(c);
}
else if(flagStr.equals("number")){
clist.add('_');
}
clist.add(c);
flagStr="litter";
}
}
for(Iterator<Character> it=clist.iterator();it.hasNext();){
System.out.print(it.next().toString());
}
}}
dasfwe waeopirwe 7a6ef87ae8 sad56f4we we5sa4fsa
Dasfwe Waeopirwe_7_a_6_ef_87_ae_8 Sad_56_f_4_we We_5_sa_4_fsa
你只要把.toString().matches("[a-zA-Z]")这些换成字符比较就ok了
之后先把第一个字母变大写 再用正则表达式匹配
public class Main { public static void main(String[] args){
String s="you and me what java2005program";
//s="this is a 99devil";
s=s.trim();
s=(char)(s.charAt(0)-32)+s.substring(1);//直接把字符串首字母变大写
s=s.replaceAll("\\s+", " ");//\\s表示 空格,回车,换行等空白符,+号表示一个或多个的意思,所以...
for(int i=0;i<s.length()-1;i++){
if(s.charAt(i)==' '&&(s.charAt(i+1)>='a'&&s.charAt(i+1)<='z')){//前面为空白符后面是小写字母
s=s.substring(0,i+1)+(char)(s.charAt(i+1)-32)+s.substring(i+2);
}else if(
//前面为字母后面为数字
((s.charAt(i) >= 'a' && s.charAt(i) <= 'z') || (s.charAt(i) >= 'A' && s.charAt(i) <= 'Z'))&& ((s.charAt(i + 1) >= '0' && s.charAt(i + 1) <= '9'))
//前面为数字后面为字母
|| ((s.charAt(i + 1) >= 'a' && s.charAt(i + 1) <= 'z') || (s.charAt(i + 1) >= 'A' && s.charAt(i + 1) <= 'Z'))&& ((s.charAt(i) >= '0' && s.charAt(i) <= '9'))
){
s=s.substring(0,i+1)+"_"+s.substring(i+1);
}
}
System.out.println(s);
}
}