如何删除字符串中最后一个句点之前的所有文本
实现方案:截取字符串最后一个句点后的内容
需求说明
- 输入示例字符串:
TEMPORAL.LOBE_Oligodendrocytes.SCZ_PGC3_GWAS - 目标输出:
SCZ_PGC3_GWAS - 核心规则:删除字符串中最后一个
.之前的所有内容,保留后缀部分,需避免字符串前半段存在的多个.干扰匹配结果。
不同编程语言的实现代码
Python
优先使用右拆分的简洁写法,逻辑清晰无冗余:
raw_str = "TEMPORAL.LOBE_Oligodendrocytes.SCZ_PGC3_GWAS" res = raw_str.rsplit('.', maxsplit=1)[-1]
如果需要兼容「字符串中不存在句点」的边界场景(避免索引报错),可以用位置查找的写法:
raw_str = "TEMPORAL.LOBE_Oligodendrocytes.SCZ_PGC3_GWAS" last_dot_idx = raw_str.rfind('.') res = raw_str[last_dot_idx+1:] if last_dot_idx != -1 else raw_str
R
通过贪婪正则直接替换前缀即可,适合批量处理向量格式的字符串:
raw_str <- "TEMPORAL.LOBE_Oligodendrocytes.SCZ_PGC3_GWAS" res <- sub(".*\\.", "", raw_str)
Bash/Shell
直接用Shell内置字符串截取语法,不需要调用外部命令,执行效率最高:
raw_str="TEMPORAL.LOBE_Oligodendrocytes.SCZ_PGC3_GWAS" res=${raw_str##*.}
JavaScript
通过lastIndexOf定位最后一个句点的位置后直接截取:
const rawStr = "TEMPORAL.LOBE_Oligodendrocytes.SCZ_PGC3_GWAS" const res = rawStr.substring(rawStr.lastIndexOf('.') + 1)
以上实现均针对多句点的字符串场景做了适配,不会错误匹配到靠前的句点,无句点时会默认返回原字符串,不会抛出异常。
内容的提问来源于stack exchange,提问作者Workhorse
相关产品推荐
相关产品推荐

