You need to enable JavaScript to run this app. 如何移除字符串中英文句号(.)之后的全部文本(含.jpg截断场景)
优惠活动
大模型
产品
解决方案
定价
更多

如何移除字符串中英文句号(.)之后的全部文本(含.jpg截断场景)

移除字符串中英文句号后全部内容的实现方案

核心实现逻辑为定位目标英文句号的位置,截取该位置之前的全部内容即可。针对文件名类场景,需根据需求选择对应的句号定位规则:

  • 规则1:遇到第一个英文句号即截断后续所有内容
  • 规则2:仅截断最后一个英文句号及之后的内容(适用于去除文件扩展名的常规文件名处理场景,可匹配输入e 01_US_CAN_141.jpg输出e 01_US_CAN_141的需求)

不同技术栈的具体实现

Python

  • 规则1(第一个句号截断)
s = "e 01_US_CAN_141.jpg"
dot_index = s.find('.')
# 无句号时直接返回原字符串
result = s[:dot_index] if dot_index != -1 else s
  • 规则2(最后一个句号截断,适合文件名去后缀)
s = "e 01_US_CAN_141.jpg"
dot_index = s.rfind('.')
result = s[:dot_index] if dot_index != -1 else s

JavaScript(前端/Node.js场景)

  • 规则1
const s = "e 01_US_CAN_141.jpg";
const dotIndex = s.indexOf('.');
const result = dotIndex !== -1 ? s.slice(0, dotIndex) : s;
  • 规则2
const s = "e 01_US_CAN_141.jpg";
const dotIndex = s.lastIndexOf('.');
const result = dotIndex !== -1 ? s.slice(0, dotIndex) : s;

Java

  • 规则1
String s = "e 01_US_CAN_141.jpg";
int dotIndex = s.indexOf('.');
String result = dotIndex != -1 ? s.substring(0, dotIndex) : s;
  • 规则2
String s = "e 01_US_CAN_141.jpg";
int dotIndex = s.lastIndexOf('.');
String result = dotIndex != -1 ? s.substring(0, dotIndex) : s;

Shell(批量文件名处理场景)

使用Shell参数展开可快速实现,无需额外写逻辑:

  • 规则1(截断第一个句号及后续):${file%%.*}
  • 规则2(截断最后一个句号及后续,通用去扩展名):${file%.*}

示例批量重命名:

# 遍历当前目录所有文件,去掉文件后缀重命名
for file in *; do
  # 跳过目录
  if [ -f "$file" ]; then
    mv "$file" "${file%.*}"
  fi
done

边界情况说明

  • 字符串无英文句号:所有实现都默认返回原字符串,不会触发报错
  • 句号出现在字符串开头:如.test.jpg,规则2处理后会保留开头的点,输出.test,符合常规去扩展名的预期
  • 句号出现在字符串末尾:如test.jpg.,规则2处理后输出test.jpg,自动去除末尾的空后缀

内容的提问来源于stack exchange,提问作者swagatika

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.05 14:54:04