思路:用split()将字符串中的单词分隔开,然后再单词后加入字符,最后将单词连接起来
话不多说,直接上代码
import java.util.Scanner;
public class Test2 {
/**
* 测试案列: input: are you OK
* output: are1 you2 OK3
*
*/
public void funC() {
Scanner in = new Scanner( System.in );
for (int ci = 0; ci < 10; ci++) { //设置在控制台输入字符串次数
String str = new String( in.nextLine() );
String str1 = new String();
String[] strfen = str.split( "\\W+"); //将单词用字符串数组表示
for (int i = 0; i < strfen.length; i++) {
char j = (char) (i + 49); //根据ASCII码,将数字转为字符
strfen[ i ] += j;//插入字符
}
for (int i = 0; i < strfen.length; i++) {//将字符串数组相加
if (i == strfen.length - 1) {
str1 += strfen[ i ];
} else {
str1 += strfen[ i ] + " ";
}
}
System.out.println( str1 );
}
in.close();
}
public static void main(String[] args) {
Test2 test = new Test2();
test.funC();
}
}
该代码中split()用到了正则表达式(用到的正则表达式已加粗显示),然后将正则表达式语法也一起讲下:
元字符 |
描述 |
\ |
将下一个字符标记符、或一个向后引用、或一个八进制转义符。例如,“\\n”匹配\n。“\n”匹配换行符。序列“\\”匹配“\”而“\(”则匹配“(”。即相当于多种编程语言中都有的“转义字符”的概念。 |
^ |
匹配输入字符串的开始位置。如果设置了RegExp对象的Multiline属性,^也匹配“\n”或“\r”之后的位置。 |
$ |
匹配输入字符串的结束位置。如果设置了RegExp对象的Multiline属性,$也匹配“\n”或“\r”之前的位置。 |
* |
匹配前面的子表达式任意次。例如,zo*能匹配“z”,“zo”以及“zoo”。*等价于{0,}。 |
+ |
匹配前面的子表达式一次或多次(大于等于1次)。例如,“zo+”能匹配“zo”以及“zoo”,但不能匹配“z”。+等价于{1,}。 |