C#如何获取首个全大写单词并以此分割字符串?
解决方法:找到第一个全大写单词并分割字符串
我来帮你搞定这个问题!核心思路就是先定位到字符串里第一个由纯大写字母组成的完整单词,再以此为分割点拆分字符串。下面是具体的实现方案(以Python为例):
步骤说明
- 匹配目标单词:用正则表达式精准找到第一个全大写单词,通过单词边界确保匹配的是完整单词,避免误判夹杂小写或数字的片段。
- 拆分并清理:拿到该单词的起始位置后,把字符串拆成两部分——单词之前的内容会去掉末尾多余空格,单词开始的部分会去掉开头多余空格,和你给出的示例输出对齐。
- 边界情况处理:如果字符串里压根没全大写单词,就返回原字符串加空字符串(你也可以根据实际需求调整这个逻辑)。
代码实现
import re def split_at_first_all_upper(input_string): # 匹配第一个全大写完整单词:\b是单词边界,[A-Z]+匹配连续大写字母 match_result = re.search(r'\b[A-Z]+\b', input_string) if not match_result: # 没有找到全大写单词时的返回逻辑 return [input_string, ""] # 获取第一个全大写单词的起始索引 split_position = match_result.start() # 拆分并清理前后空白字符,保证输出格式和示例一致 part_before = input_string[:split_position].rstrip() part_after = input_string[split_position:].lstrip() return [part_before, part_after] # 测试你给出的示例输入 sample_input = "Text 123 and more Text THIS IS MORE TEXT" output = split_at_first_all_upper(sample_input) print(output) # 输出结果:['Text 123 and more Text', 'THIS IS MORE TEXT']
额外测试场景
- 字符串开头就是全大写单词:
split_at_first_all_upper("HELLO world")→["", "HELLO world"] - 存在多个全大写单词:
split_at_first_all_upper("test ABC xyz DEF")→["test", "ABC xyz DEF"] - 无全大写单词:
split_at_first_all_upper("Hello World 123")→["Hello World 123", ""]
内容的提问来源于stack exchange,提问作者Caz1224
相关产品推荐
相关产品推荐

