C#正则如何仅保留单个分隔符?字符串拆分实现求助
解决方案:用正则全局匹配目标单元再转换大小写
看起来你已经搞定了空格的提取,但卡在了按.分隔单个字母同时保留最后一段带括号内容的问题上。核心问题在于直接用split('.')会把空格和前面的字母混在一起,没法单独提取空格元素。我们换个思路:直接匹配所有需要作为数组元素的单元,再统一转大写即可。
具体思路
我们需要匹配三种目标单元:
- 单个小写字母(对应原字符串中
.分隔的单个字符) - 空格(直接保留为数组元素)
- 带括号的后缀内容(比如
ng(ing),作为一个整体)
对应的正则表达式可以写为:/[a-z]|\s|\w+\(ing\)/g
[a-z]:匹配单个小写字母\s:匹配空格\w+\(ing\):匹配以(ing)结尾的字母组合(如果需要适配任意带括号后缀,可调整为\w+\([^)]+\))
代码示例(以JavaScript为例)
const inputStr = "x.i.x.m x.i.x.m.ng(ing)"; // 全局匹配所有目标单元 const matchedItems = inputStr.match(/[a-z]|\s|\w+\(ing\)/g); // 转换为大写并得到结果数组 const resultArray = matchedItems.map(item => item.toUpperCase()); console.log(resultArray); // 输出:["X", "I", "X", "M", " ", "X", "I", "X", "M", "NG(ING)"]
为什么这个方法可行?
- 正则会自动跳过所有的
.,直接提取我们需要的内容,不用额外处理分隔符 - 空格被单独匹配,自然成为数组中的独立元素
- 带括号的后缀被作为一个整体匹配,不会被拆分成单个字母
内容的提问来源于stack exchange,提问作者Alex Jacobs
相关产品推荐
相关产品推荐

