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

批处理脚本精确词/短语替换问题:第一人称转第二人称异常

批处理实现第一人称到第二人称的精确单词替换

问题描述

编写文本冒险游戏时,需要将用户输入的第一人称语句转换为第二人称(例如把I search inside the box.转为You search inside the box.)。但直接使用批处理的子字符串替换会替换所有匹配字符,导致inside被错误替换为younsyoude——因为单个i也被替换成了you。

解决方案

通过匹配单词边界(空格、字符串首尾)实现精确替换,同时调整替换顺序避免冲突。以下是优化后的批处理脚本:

@echo off
setlocal enabledelayedexpansion

:: 假设用户输入已存入choice变量
:: 优先替换长短语,避免短替换破坏完整表达
set "choice=!choice:I am=you are!"
set "choice=!choice:I'm=you're!"

:: 处理独立单词"I",覆盖开头、中间、结尾三种情况
set "choice=!choice: I = you !"
if "!choice:~0,2!"=="I " set "choice=You !choice:~2!"
if "!choice:~-2!"==" I" set "choice=!choice:~0,-2! You"

:: 处理"we"
set "choice=!choice: we = you !"
if "!choice:~0,3!"=="we " set "choice=You !choice:~3!"
if "!choice:~-3!"==" we" set "choice=!choice:~0,-3! You"

:: 处理"us"
set "choice=!choice: us = you !"
if "!choice:~0,3!"=="us " set "choice=You !choice:~3!"
if "!choice:~-3!"==" us" set "choice=!choice:~0,-3! You"

:: 处理"my"
set "choice=!choice: my = your !"
if "!choice:~0,3!"=="my " set "choice=your !choice:~3!"
if "!choice:~-3!"==" my" set "choice=!choice:~0,-3! your"

:: 处理"myself"
set "choice=!choice: myself= yourself!"
set "choice=!choice:myself =yourself !"
if "!choice:~0,6!"=="myself" set "choice=yourself!choice:~6!"

:: 处理"ourselves"
set "choice=!choice: ourselves= yourselves!"
set "choice=!choice:ourselves =yourselves !"
if "!choice:~0,9!"=="ourselves" set "choice=yourselves!choice:~9!"

:: 处理"am"
set "choice=!choice: am = are !"
if "!choice:~0,3!"=="am " set "choice=are !choice:~3!"
if "!choice:~-3!"==" am" set "choice=!choice:~0,-3! are"

:: 输出转换后的结果
echo !choice!
endlocal

关键说明

  1. 延迟扩展:启用enabledelayedexpansion确保变量在多次替换中能实时更新值。
  2. 替换顺序:先替换长短语(如I am、I'm),再替换单个单词,避免短替换拆解完整表达。
  3. 边界匹配:针对每个代词,分别处理三种场景:
    • 单词位于字符串中间(前后均有空格)
    • 单词位于字符串开头(后接空格)
    • 单词位于字符串结尾(前接空格)
      这种方式能避免替换单词内部的字符(如inside中的i不会被误替换)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 22:56:30