蓝桥杯 串的处理 java解法

例题如下:

在实际的开发工作中,对字符串的处理是最常见的编程任务。本题目即是要

求程序对用户输入的串进行处理。具体规则如下:

1.把每个单词的首字母变为大写。

2.把数字与字母之间用下划线字符()分开,使得更清晰

3.把单词中间有多个空格的调整为1个空格。

输入描述

用户输入的串中只有小写字母,空格和数字,不含其它的字母或符号。每个

单词间由1个或多个空格分隔。假设用户输入的串长度不超过200个字符。

输出描述

输出处理好的字符串。

输入输出样例

示例

输入

you and me what cpp2005program

输出

You And Me What Cpp-2005_program

代码如下:

import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改

public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        String inputString = scan.nextLine();
        String processedString = processString(inputString);
        System.out.println(processedString);
        scan.close();
    }

    private static String processString(String inputString) {
        // 把每个单词的首字母变为大写
        String[] words = inputString.split("\\s+");
        StringBuilder result = new StringBuilder();

        for (String word : words) {
            // 处理数字与字母之间用下划线字符分开
            word = word.replaceAll("(?<=\\D)(?=\\d)|(?<=\\d)(?=\\D)", "_");

            // 把单词中间多个空格调整为1个空格
            word = word.replaceAll("\\s+", " ");

            // 把每个单词的首字母变为大写
            if (!word.isEmpty()) {
                result.append(Character.toUpperCase(word.charAt(0))).append(word.substring(1)).append(" ");
            }
        }

        // 移除末尾的空格
        return result.toString().trim();
    }
}

代码解析:

1.nextLine()Scanner类中的方法,它会读取输入的一行文本,并将其作为一个字符串返回。

2.String[] words = inputString.split("\\s+"); 这行代码使用了字符串的 split 方法,将 inputString 按照正则表达式 "\\s+" 进行拆分,然后将拆分后的结果存储在一个字符串数组 words 中。

inputString 是之前从用户输入中读取的一行字符串。

split("\\s+") 调用了字符串的 split 方法,该方法接受一个正则表达式作为参数,用于指定分隔符。在这里,正则表达式 "\\s+" 表示一个或多个空格字符(包括空格、制表符等)作为分隔符。

\\s 表示空白字符(whitespace character),包括空格、制表符、换行符等。

+ 表示匹配前面的元素一次或多次。

因此,\\s+ 表示一个或多个空白字符作为分隔符。

因此,words 数组中存储了 inputString 被空格分隔后的所有单词。

3.StringBuilder 类是 Java 中用于处理可变字符串的类,通常用于拼接大量字符串时,以提高性能。使用 StringBuilder 而不是直接使用 String 是因为在处理大量字符串拼接时,StringBuilder 提供了更高效的方式。StringBuilder 的方法允许你追加、插入、删除和替换字符序列,而不需要创建新的字符串对象。

4.replaceAll 是 Java 中字符串类 (String) 提供的一个方法,用于替换字符串中的所有匹配子串。该方法接受两个参数:第一个参数是一个正则表达式,用于指定要匹配和替换的模式。第二个参数是一个字符串,用于替换模式匹配的子串。

(?<=\\D): 正向后瞻,匹配前面是非数字(非数字字符)的位置。

(?=\\d): 正向先行,匹配后面是数字的位置。

合在一起,这个正则表达式匹配的是前面是非数字,后面是数字的位置,即非数字字符与数字字符之间的位置。后面同理

5.在正则表达式中,逻辑“或”使用的是单个竖线 |,而不是 Java 中常用的逻辑或 ||

6.append() 方法是 StringBuilderStringBuffer 类中的方法,用于在字符串构建器对象的末尾追加字符序列(字符串、字符、数字等)。

StringBuilder 中,append 方法的签名有多个,可以接受不同类型的参数,例如:

  1. append(String str): 将指定的字符串追加到字符串构建器。
  2. append(char c): 将指定的字符追加到字符串构建器。
  3. append(int i): 将指定的整数追加到字符串构建器。
  4. ... 等等。

7.toUpperCase() 是 Java 中 String 类和 Character 类提供的方法之一,用于将字符串或字符转换为大写形式。

8.charAt(0)String 类中的方法,用于获取字符串中指定索引位置的字符。在 Java 中,字符串的索引从 0 开始,所以 charAt(0) 返回的是字符串的第一个字符。

9.substringString 类中的方法,用于从一个字符串中提取子字符串。有两种常用的 substring 方法。代码中的方法是从指定的索引位置 beginIndex 开始,截取到字符串的末尾。

10.trim() 是 Java 中 String 类提供的一个方法,用于移除字符串两端的空白字符(whitespace characters)。空白字符包括空格、制表符、换行符等。

以上十个内容基本涵盖本代码的问题。

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值