首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在一个特定的单词之后裁剪字符串?

如何在一个特定的单词之后裁剪字符串?
EN

Stack Overflow用户
提问于 2016-02-13 17:08:02
回答 3查看 7K关注 0票数 2

当字符串.bat出现时,如何在, TARO/文件中剪切这样的字符串?

代码语言:javascript
复制
Init., 12, TARO/ BLA BLA CDE
Ademanto, TARO/ BLA BLA XYZ

之后我只想要Init., 12Ademanto

我不能在FOR中使用分隔符,因为它仅限于一个字符,对吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-02-13 20:47:06

这里有一个更健壮的解决方案,即使字符串包含引号或有毒字符,也应该工作--用新的行字符替换截止字符串。因为/F将迭代每个结果行,所以使用GOTO来脱离循环,只保留第一行。

代码语言:javascript
复制
@echo off
setlocal disableDelayedExpansion
set "string=;Init., 12, TARO/ BLA BLA CDE"
setlocal enableDelayedExpansion
set ^"string=!string:, TARO/=^

!^"
for /f delims^=^ eol^= %%A in ("!string!") do (
  endlocal
  set "string=%%A"
  goto :break
)
:break
set string
票数 5
EN

Stack Overflow用户

发布于 2016-02-13 17:18:32

set可以从开始到定义字符串,但不能从定义字符串到末尾。使用一个小技巧会有帮助:

代码语言:javascript
复制
setlocal enabledelayedexpansion
set "string=Init., 12, TARO/ BLA BLA CDE" 
set "str=%string:*TARO/=TARO/%"
echo "!string:%str%=!"

(将字符串的开始(包括分隔符-字符串(*TARO/) )替换为分隔符字符串(TARO/)。在第二步中,删除找到的字符串)

另一种方法是用单个字符分隔符替换分隔符-字符串(任何肯定不在字符串中的字符)。(下面这个奇怪的符号(þ)是一个chr(127),但您也可以使用@#或其他不在字符串中的字符)。

代码语言:javascript
复制
for /f "delims=þ" %%i in ("%string:TARO/=þ%") do echo %%i
票数 6
EN

Stack Overflow用户

发布于 2016-02-13 19:36:30

还有一条路。将, TARO/替换为&rem;

代码语言:javascript
复制
@echo off
setlocal

set "str=Init., 12, TARO/ BLA BLA CDE"
set str=%str:, TARO/=&rem;%

echo %str%

这是因为变量是在计算set命令之前展开的。因此,当行被评估时,它被评估为..。

代码语言:javascript
复制
set str=Init.,12&rem; BLAH BLAH CDE

..。作为set var=value & rem (rest of line ignored)的复合命令

你也可以用echo %str:, TARO/=&rem;%来达到同样的效果。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35382760

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档