Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 限制变量的字符数?_String_Batch File_Variables - Fatal编程技术网

String 限制变量的字符数?

String 限制变量的字符数?,string,batch-file,variables,String,Batch File,Variables,我有许多变量将在循环中调用。例如,我想制作一个变量,当超过30个字符时,它将被剪切为30个字符,并在末尾添加3个点 例如: 变成: 你好 不过,这对我有很大帮助——如果有人能做一些更高级的事情,例如在剪切字符的某些部分时,在文本的中间添加点 例如: set text=Hello-woooooooooooooooold 变成: 你好,世界 使用%variable:~num\u chars\u to\u skip%可以非常轻松地解决您的问题 使用SET命令,我们可以编辑变量,并让它删除长度超过30个

我有许多变量将在循环中调用。例如,我想制作一个变量,当超过30个字符时,它将被剪切为30个字符,并在末尾添加3个点

例如:

变成:

你好

不过,这对我有很大帮助——如果有人能做一些更高级的事情,例如在剪切字符的某些部分时,在文本的中间添加点

例如:

set text=Hello-woooooooooooooooold

变成:

你好,世界


使用%variable:~num\u chars\u to\u skip%可以非常轻松地解决您的问题

使用SET命令,我们可以编辑变量,并让它删除长度超过30个字符的所有内容。从那里我们可以获取我们创建的新变量并从那里操作它

下面的代码将删除所有超过30个字符,并在文本中显示它们。。。格式

在此处了解有关语法子字符串的详细信息:

根据您提到的30个字符的需要调整以下数字,但您的示例中没有一个与该数字匹配: 对于前十个字符,由于基于零的计数,它会检查第十一个位置是否有任何内容 7表示三个点之前的字符数
3对于最后的字符数

,切勿在set命令中的等号周围加空格。它们成为变量名/内容的一部分。有关变量子字符串的语法,请参见如何将Hello world转换为Hello。请展示你的作品。您指定30作为字符串的最大长度,然后显示15个字符的字符串作为所需结果:Hello wo…orld。将一个31个字符的字符串的长度减少到15,同时保持…个、28个、29个、30个字符的字符串的完整性,这是不符合逻辑的,您应该将它们减少到允许的最大长度,但您仍然可能希望结果字符串的另一个长度,无论哪种方式,您都应该具体说明,它不能是随机的。这甚至可以帮助您自己找到解决方案。我会在询问我的水晶球后尽快提供答案。。。
set text = Hello world
@ECHO OFF

::Edit string one with 30 char limit. String has 40 Chars.
SET String=0123456789012345678901234567890123456789
SET Result=%String:~0,30%
ECHO %Result%...

::Edit string one with 30 char limit. String has 90 Chars.
SET String=012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
SET Result=%String:~0,30%
ECHO %Result%...

::Edit string one with 30 char limit. String has 6 Chars.
SET String=0123456
SET Result=%String:~0,30%
ECHO %Result%...

PAUSE
GOTO :EOF
@echo off
call :convert Hello
call :convert Hello beautiful World
call :convert Hello wooooooooooooooooooooooooooooooooorld
goto :eof

:convert
set "x=%*"
REM if the string is shorter than 10 chars, just print it and return:
if "%x:~10%" == "" echo %1 & goto :eof
REM else print first 7 chars, thee dots and the last three chars:
echo %x:~0,7%...%x:~-3%