You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AutoIt脚本:如何拆分字符串且保留句末分隔符?

解决AutoIt拆分句子时保留句末标点的问题

嘿,这个坑我之前踩过!用StringSplit按!?.拆分确实会把这些句末标点丢掉,要保留它们的话,换用正则表达式拆分就完美解决啦。

核心思路:用正向回顾断言实现分割

AutoIt的StringRegExpSplit支持正则表达式,我们可以用正向回顾断言(?<=[!?.])来定位分割位置——这个断言会匹配「前面是!/./?」的位置,分割时不会吃掉这些标点,而是让它们留在前一个句子的末尾。

具体代码示例

Local $displayed_file = "One. Two? Three! Four."
; 使用正则拆分,保留句末标点
Local $LineArray = StringRegExpSplit($displayed_file, "(?<=[!?.])")

; 遍历输出结果(可选:去除句子开头的空格)
For $i = 0 To UBound($LineArray) - 1
    $LineArray[$i] = StringTrimLeft($LineArray[$i], 1) ; 去掉句子前的空格
    ConsoleWrite($LineArray[$i] & @CRLF)
Next

运行这段代码后,输出的每个元素都会带着对应的句末标点:

One.
Two?
Three!
Four.

为什么这个方法管用?

正向回顾断言(?<=...)的作用是「检查当前位置的左侧是否符合指定规则」,我们用它匹配!/./?的右侧位置,拆分时就在这个位置切开,自然就把标点留在了前一个句子的末尾,不会像StringSplit那样把分隔符丢弃。

如果遇到更复杂的场景(比如省略号、引号内的标点),只需要微调正则表达式即可,但针对你描述的基础需求,这个方案完全够用~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:58:47