Java分割字符串并获取第几个字符串,优雅写法

// String
String[] split = cc.getTeacherPosition().split(REGEX);
if (!ArrayUtils.isEmpty(split) && split.length > 1) {
    chaosCourseResponseDto.setTeacherPosition(split[1]);
}
// google
ArrayList<String> strings = Lists.newArrayList(Splitter.on(":").trimResults().split(cc.getTeacherPosition()));
if (!CollectionUtils.isEmpty(strings) && strings.size() > 1) {
    chaosCourseResponseDto.setTeacherPosition(strings.get(1));
}
// 我就想用一行代码解决
Pattern.compile(REGEX).splitAsStream(cc.getTeacherPosition()).skip(1).findFirst().ifPresent(chaosCourseResponseDto::setTeacherPosition);
### 关于字符串基本处理的实验任务 #### 实验目标 掌握 C 语言中字符串的操作方法,包括但不限于字符串的输入输出、比较、复制以及指针操作等内容。具体涉及以下几个方面: 1. 掌握字符串的访问和输入输出方式[^1]。 2. 学会使用标准库中的字符串处理函数(如 `strcmp` 和 `strcpy` 等)。 3. 熟悉如何向函数传递字符串参数,理解返回字符指针的意义。 以下是针对实验内容的具体解析: --- #### 错误修正后的程序:找最小的字符串 原始代码存在逻辑错误,主要体现在以下几点: - **数组赋值问题**:无法直接将一个字符串变量赋值给另一个字符串变量 (`min = str`),因为这是在尝试拷贝指针而非实际数据。 - **字符串比较问题**:`if (min > str)` 的写法不适用于字符串比较,需改用 `strcmp` 函数。 下面是修复后的完整代码示例: ```c #include <stdio.h> #include <string.h> int main() { int i; char str[80], min[80]; printf("Input 5 strings:\n"); scanf("%s", min); // 初始化第一个字符串为最小值 for (i = 1; i < 5; i++) { scanf("%s", str); if (strcmp(min, str) > 0) { // 使用 strcmp 进行字符串比较 strcpy(min, str); // 如果当前字符串更小,则更新最小值 } } printf("Min is: %s\n", min); return 0; } ``` 此代码实现了按字典顺序找到五个字符串中的最小值。 --- #### 倒序打印字符串 对于从键盘输入的字符串进行倒序打印的任务,可以采用如下实现方案: ```c #include <stdio.h> #include <string.h> void reverse_string(char *str) { int length = strlen(str); for (int i = length - 1; i >= 0; --i) { putchar(str[i]); // 输出逆序字符 } } int main() { char input_str[100]; printf("Enter a string: "); scanf("%s", input_str); printf("Reversed string: "); reverse_string(input_str); printf("\n"); return 0; } ``` 上述代码通过逐个读取字符串最后一个字符的方式完成了反转功能[^2]。 --- #### 统计特定字符出现次数 为了统计某个字符在一个混合大小写的字符串中出现的频率,可借助循环结构逐一扫描整个字符串。下面是一个简单的例子: ```c #include <stdio.h> #include <ctype.h> // 提供 toupper/tolower 功能 int count_char(const char *str, char target) { int count = 0; while (*str != '\0') { if (toupper(*str) == toupper(target)) { // 转换为大写后对比 ++count; } ++str; } return count; } int main() { const char *input_str = "AbCdeFgHiJKlM"; char search_char = 'a'; int result = count_char(input_str, search_char); printf("Character '%c' appears %d times.\n", search_char, result); return 0; } ``` 这里采用了忽略字母大小写的策略来提升通用性。 --- #### 遍历字符串的所有字符 当需要逐一遍历字符串时,可以通过定义一个指向字符串起始位置的指针逐步移动完成这一过程。例如: ```c #include <stdio.h> void traverse_string(const char *sp) { while (*sp != '\0') { putchar(*sp++); } putchar('\n'); } int main() { const char *str = "Hello, world!"; traverse_string(str); return 0; } ``` 这段代码展示了如何利用指针操作高效地遍历显示字符串内容[^3]。 --- #### 中英文混排字符串处理 基于 Java 平台下的字符串扩展与分割需求,可通过以下步骤达成目标: 1. 创建一个 `StringBuffer` 对象存储初始输入; 2. 向其追加指定的中文短语; 3. 利用 `StringTokenizer` 类分解最终形成的复合字符串成独立单元。 样例演示如下: ```java import java.util.Scanner; import java.util.StringTokenizer; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("请输入一段英文:"); StringBuffer sb = new StringBuffer(scanner.nextLine()); sb.append(" 你好 ").append(" 欢迎学习 ").append(" 最有用语言 "); StringTokenizer tokenizer = new StringTokenizer(sb.toString()); int wordCount = tokenizer.countTokens(); System.out.println("总共有 " + wordCount + " 个单词."); while (tokenizer.hasMoreTokens()) { System.out.println(tokenizer.nextToken()); } } } ``` 该脚本不仅能够满足题目描述的要求,还额外提供了清晰的结果展示形式[^5]。 --- ### 总结 以上分别介绍了多种有关字符串基础操作的技术要点及其对应的实践案例。希望这些资料能帮助您顺利完成相关课程作业或者项目开发工作!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值