//字符串的处理要求:
1 把每个单词首字母变成大写
2 将字母与数字之间用下划线(_)分开
3 每个单词中间有多个空格变成一个
例如:this is a99cat
输出为:This is a 99_cat
代码如下:
import java.util.Scanner;
public class Chuando {
public static void main(String args[])
{
Scanner sca=new Scanner(System.in);
String s=sca.nextLine();
char ch[];
ch=new char[100];
int len=s.length();
int i,m=0;
for( i=0;i<len;i++)
{
ch[i]=s.charAt(i);//将字符串存到数组[]中
}
char line[],blank=' ',line2[];
line=new char[100];
line2=new char[100];
boolean flag1=true,flag2=true,flag3=true;
for(int j=0;j<i;j++)
{
if(ch[j]==blank&&flag1==true)
{
line[m]=ch[j];
m++;
flag1=false;
}//出现第一个空格存进line数组中,同时将flag1变为false,当后面还是空格时就不会再将空格存进line数组,而是j++,继续向下寻找,直到不是空格
else
{
if(flag1==true||ch[j]!=blank)
{
line[m]=ch[j];
m++;
flag1=true;
}//不是空格将该字符存入line1数组中,同时将flag1变为true
}
}
//将ch[]数组中连续的几个空格删去,自己在相关位置加个空格存到line[]中,剩余的字符和存到line[]中,按原来顺序存储
for(int j=0;j<m;j++)
{
if(line[j]==blank)
{
line2[j]=line[j];
flag2=true;
}//当空格出现时,后面就是一个新的单词,空格后面第一个字符大写,用flag2记录空格出现
else
{
if(flag2==true&&(line[j]<48||line[j]>57))
{
line2[j]=(char) (line[j]-32);
flag2=false;
}//空格后面第一个字符,判断它不是数字就大写,将flag2改为false,应为后面单词不要大写----情况1
else if(flag2==true&&(48<=line[j]&&line[j]<=57))
{
line2[j]=line[j];
flag2=false;
}//空格后面第一个字符,判断它是数字就不大写,直接存入line2数组,将flag2改为false,应为后面单词不要大写----情况1
else
line2[j]=line[j];//没有出现空格,直接将字符存入line2
}
}
char line3[];
line3=new char[200];
for(int j=0,n=0;j<m;j++)
{
//if(48<=line2[j]&&line2[j]<=57&&48<=line2[j+1]&&line2[j+1]<=57&&flag3==true)
if((line2[j]<48||line2[j]>57)&&48<=line2[j+1]&&line2[j+1]<=57&&flag3==true&&line2[j]!=blank)
{
//line3[n]=blank;
//line3[n+1]=line2[j];
line3[n]=line2[j];
line3[j+1]=blank;
n=n+2;
}
else if(48<=line2[j]&&line2[j]<=57&&48<=line2[j+1]&&line2[j+1]<=57&&flag3==true)
{
//line3[n]='_';
//line3[n+1]=line2[j];
//n=n+2;
line3[n]=line2[j];
n=n+1;
}
else if(48<=line2[j]&&line2[j]<=57&&48<=line2[j+1]&&line2[j+1]<=57&&flag3==false)
{
line3[n]=line2[j];
n++;
flag3=true;//
}
else if(48<=line2[j]&&line2[j]<=57&&(line2[j+1]<=48||57<=line2[j+1])&&line2[j+1]!=blank)
{
line3[n]=line2[j];
line3[n+1]='_';
n=n+2;
flag3=true;//
}
else if(line2[j+1]==blank&&48<=line2[j]&&line2[j]<=57)
{
line3[n]=line2[j];
line3[n+1]=line2[j+1];
n=n+2;
j++;
flag3=false;
}
else
{
line3[n]=line2[j];
n++;
flag3=true;//
}
}
System.out.println(line);
System.out.println(line2);
System.out.println(line3);
//line是先对床[]字符串删去多余空格,存入line中
//line2是对line1字符串进行首字母大写
//line3是对line2数组存放的字符串进行添加下划线操作(两个两个的字符性质比较,都为数字,或是字符加数字,或数字加字符,或空格加字符,...)
}
}
运行截图:
1846

被折叠的 条评论
为什么被折叠?



