Board logo

标题: [文本处理] 求助批处理截取字符串小数点前后的1位或多位字符 [打印本页]

作者: cc5511    时间: 2020-8-28 21:32     标题: 求助批处理截取字符串小数点前后的1位或多位字符

比如这3串数字:
1、123.45678
2、1234.5678
3、12345.678

我想要截取的内容:
第1个数为:123.4         (取小数点后1位)
第2个数为:1234.56     (取小数点后2位)
第3个数为:12345       (只取整数)

因为我遇到需要处理的数字不是固定的,所以想知道以上3个例子的截取/分割字符的方法。

关于第3个,网上搜了下,找到分割字符的方式,不过好像只能保留特定字符后面的,不能留前面的,尴尬了~~~
  1. @echo off
  2. set a=12345.678
  3. echo 原始a:%a%
  4. echo 删除变量a中的第一次出现的.及其前面的所有字符
  5. echo %a:*.=%
  6. pause
复制代码

作者: qixiaobin0715    时间: 2020-8-29 09:40

回复 1# cc5511

用for循环可以,不过复杂点:
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set x=12345.678
  4. for /f "tokens=1,2 delims=." %%a in ("%x%") do (
  5.     set str1=%%a
  6.     set str2=%%b
  7.     echo !str1!.!str2:~0,1!
  8.     echo !str1!.!str2:~0,2!
  9.     echo !str1!
  10. )
  11. pause
复制代码

作者: yhcfsr    时间: 2020-8-29 10:14

  1. @echo off
  2. rem 取小数点后n位
  3. set n=3
  4. for /f "tokens=1,* delims=." %%a in ("123.456789") do (
  5. set aft=%%b
  6. setlocal enableDelayedExpansion
  7. echo;%%a.!aft:~,%n%!
  8. endlocal
  9. )
  10. pause
复制代码





欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2