[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 批处理如何给数字添加千分位分隔符?

数据位数不定0~7位
正负不定
怎么每隔三位以","号分割输出


是纯数字
试了好多办法
都不完美
比如除法运算
或者%value:~-6,3%这样的

别看我注册时间
初中注册的
现在大学狗

TOP

回复 1# zhangenming
  1. set a=123456
  2. if [%a:~3,3%] equ [] (echo %a:~0,3%) else if [%a:~6,3%] equ [] (echo %a:~0,3%,%a:~3,3%) else (echo %a:~0,3%,%a:~3,3%,%a:~6,3%)
复制代码
#&cls&@powershell "Invoke-Expression ([Io.File]::ReadAllText('%~0',[Text.Encoding]::UTF8))" &pause&exit

TOP

  1. set "Num=1234567"
  2. PowerShell -c "(%Num%).ToString('0,0')"
复制代码

TOP

我是老老实实的算的。。a为变量。。
  1. @echo off
  2. set a=-2000000
  3. set /a b=a/1000
  4. set /a c=a/1000000
  5. if %b%==0 (echo %a%) else (
  6. if %c%==0 (echo %a:~0,-3%,%a:~-3%) else (echo %a:~0,-6%,%a:~-3,3%,%a:~-3%))
复制代码

TOP

正则正向预查:
  1. @mshta http://bathome.net/s/hta/ "'%random%'.replace(/\d(?=(?:\d{3})+$)/g,'$&,')"|more
复制代码
1

评分人数

    • WHY:技术 + 1

TOP

楼主可以专心学一门语言了。
1

评分人数

去学去写去用才有进步。安装python3代码存为xx.py 双击运行或右键用IDLE打开按F5运行

TOP

.net 正则中有一个从右向左搜索的选项:
  1. [regex]::Replace('1234567','(?<=\d)\d{3}', ',$&','RightToLeft')
复制代码
1

评分人数

TOP

回复 5# sishentibu


  我发现1000052是个7位数,但是不兼容

TOP

回复 2# zhangenming
批处理也能完成这个任务,只是绕点,但是也完成了。兼容正负数,可以无限位数,也可以切割任意长度字符串。
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set num=-14159265358979323846264338327950288314159265358979323846264338327950288
  4. :cut
  5. set p=!num:~-3!
  6. if "!num!"=="" (echo !p1:~0,-1! & pause & exit)
  7. set p1=!p!,!p1!
  8. set num=!num:~0,-3!
  9. goto cut
复制代码
最大可以切割5千多位的超级大数
运行实例
1

评分人数

TOP

python可以这样:
  1. "{:,}".format(33333)
复制代码
1

评分人数

下载安装python3 https://www.python.org/downloads/ 代码存为xx.py 双击运行或IDLE打开F5运行

TOP

突然觉得批处理之家已然成为各种脚本一锅乱炖的大杂烩...

TOP

回复 12# CrLf


    提问的人估计超级不爽。
去学去写去用才有进步。安装python3代码存为xx.py 双击运行或右键用IDLE打开按F5运行

TOP

回复 3# ivor


    直接判断 >=1000  AND >= 1000000 不就行了

TOP

本帖最后由 codegay 于 2016-3-9 12:17 编辑

哈哈,又撸了个python代码,处理全是数字应该没问题。
  1. 这个问题只要把判断并去掉正负号,然后把字符串翻转,这个问题就等于如何把一个字符串或者序列每3个切成一份。
  2. >>> s="12345"
  3. >>> ','.join([s[::-1][r:r+3] for r in range(0,len(s),3)])[::-1]
  4. '12,345'
  5. >>>
复制代码
1

评分人数

去学去写去用才有进步。安装python3代码存为xx.py 双击运行或右键用IDLE打开按F5运行

TOP

返回列表