首页 > 编程 > Java > 正文

JAVA蓝桥杯(2)字符串的简单处理

2019-11-08 20:00:40
字体:
来源:转载
供稿:网友

问题描述

在实际的开发工作中,对字符串的处理是最常见的编程任务。 本题目即是要求程序对用户输入的串进行处理。具体规则如下: 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.Iterator;import java.util.Scanner;import java.util.Vector;public class Question2 { private static Scanner scanner; public static void main(String[] args) { scanner = new Scanner(System.in); String input = scanner.nextLine(); String[] strings = input.split(" "); Vector<StringBuffer> source = new Vector<StringBuffer>(); Vector<StringBuffer> result = new Vector<StringBuffer>(); // 去除空白StringBuffer for (String s : strings) { if (!s.equals("")) { source.add(new StringBuffer(s)); } } // 遍历单词矢量数组 for (int i = 0; i < source.size(); i++) { String Word = source.elementAt(i).toString(); char[] a = word.toCharArray(); StringBuffer nword = new StringBuffer(); boolean numPre = false;// 记录之前为数字 boolean charPre = false;// 记录之前为字符 for (int j = 0; j < a.length; j++) { if (a[j] <= 57 && a[j] >= 48) { if (j == 0) { nword.append((char) (a[j])); numPre = true; } else if (charPre) { nword.append("_" + (char) (a[j]));// 数字和字母分开 numPre = true; charPre = false; } else { nword.append((char) (a[j])); } } if (a[j] <= 122 && a[j] >= 97) { if (j == 0) { nword.append((char) (a[j] - 32));// 首字母大写 charPre = true; } else if (numPre) { nword.append("_" + (char) (a[j]));// 数字和字母分开 numPre = false; charPre = true; } else { nword.append((char) (a[j])); } } } if (i == source.size() - 1) {// 消除合并语句后的最后一个空格 result.add(nword); } else { result.add(nword.append(" ")); } } Iterator<StringBuffer> iterator = result.iterator(); while (iterator.hasNext()) { StringBuffer stringBuffer = (StringBuffer) iterator.next(); System.out.print(stringBuffer); } }}

运行结果

you and me what cpp2005programYou And Me What Cpp_2005_program
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表