/*2. 编写一个程序,给定一个字符串“aaa果4金5a”。
* 要求:如果出现数字,把数字后面的字符替换成数字的个数个。比如这个字符串要求被替换成“aaa果金金金金aaaaa”。*/
package com.rachel02.www;
public class NumberToString {
public String ChangeNumber( String str )
//将str里的数字转换成n个后面的字符
{
char st[] = new char[50];
int j=0;
for (int i = 0; i < str.length(); i++) //遍历字符串
{
char ch = str.charAt(i);
if( ch>=48 && ch<=57 ) //如果发现数字
{
//numberToString[j].index = i; //出现数字的ch下标
//numberToString[j].number = ch[i]-48; //数字的值是几
//j++;
for(int m=0; m<(ch-48); m++)
{
if( (i+1)<str.length())
//如果当前数字不是str的最后一个,再操作
{
st[j++] = str.charAt(i+1);
}
}
}
else {
st[j++] = ch; //st是str操作后的的字符数组
}
}
String s = String.valueOf(st); //char[] -> string
System.out.println(s);
return s;
}
}
//
/*
5. 给你一个字符串数组 String []strings=new String{“tom”,”is”,”a”,”boy”};
然后让你输入一句话,如果你的输入和他给的一样的话,就原文不动的输出。如你输入 tom is a boy就输出 tom is a boy。
但是如果你输入tom is an open,输出的时候要把一样的写下来,不一样的找有没有对应的字母一样的,
如果有就在那个一样的字母后加一个”?”
//循环匹配
*/
public class StringShow {
final String strings[] = { "tom", "is", "a", "boy"}; //固定字符串
public String FindSame(String str)
{
String string = null; //!!!返回的字符串
if( str.equals("tom is a boy") )
//先判断,如果输入的字符串与strings相等,就直接输出
{
return str;
}
else //如果不相等,则开始
{
int number = 0; //字符个数纪录,遇到空格判断是否有单词
String word = null; //用来记录字符串中的单词
for(int i=0; i<str.length(); i++)
// 逐个拿出字符串中的字符,判断是否为空格
{
char ch = str.charAt(i);
if( ch != 32 ) //先判断不是空格的情况
{
if( word==null )
//若word==null,不能word+=""+ch;这样word==nullch
{
word = ""+ch;
}
else {
word += ""+ch;
}
//number++;
}
if( ch==32 || (i==str.length()-1) ) //找到了空格
{
if( number>0 ) //有单词 ,就要开始查找
{
for(int j=0; j<strings.length; j++) //逐个匹配
{
if(word.equals(strings[j])) //如果word == strings[i],就添加到输出字符串
{
if(string==null)
{
string = word+" ";
}
else
{
string += word+" "; //...
}
System.out.println("每一次的string:"+string);
}
}
word = null; //word和number都要清空
number = 0;
}
}
}
return string;
}
}
}