开源夏令营之foldcolumn工具及解决方案(四)数值精度与对齐方式处理

数值列的识别

我想到了两种方法:

(1)自动识别表格第一行(非原样输出的行,后面在不引起混淆的前提下,都是指的非原样输出的第一行)各列,后序行各列以此为准;

(2)用户指定哪些列是数值列;

在张老师的指导下,选择第二种方法,原因如下:若使用第一种方法,用户在初次使用foldcolumn 时,可能通过第一行识别,工作的很好,但是不能保证以后用户再次使用时依旧工作良好,这样会给用户造成困惑。

注:完全是整数的数值列,因不需要处理精度,没必要去指定为数值列,直接原样输出就行了。

前面表格列数的确定使用的以第一行为准,需要修改成以用户指定为准,在用户不指定的情况下,再以第一行的列数为主。

数值列中的异常情况

表格的某列被用户指定为数值列,但是这列的某些行可能不是纯粹的数值,如下面几种情况

(1)数值包含前后缀

+23.6%
-1400.8859%

前缀可以是正负号(可以有空白字符,当然可以没有前缀,目前程序中将数字前面的字符当作前缀考虑,未判断前缀),后缀是出去数值后面的字符串,后缀原样输出,后缀规则见(2)包含多数值的列

(2)列包含多个数值

85m2 (用户数据中用m2后缀表示平方米)

10m × 20lm × 4cm

如果只识别第一个数值,把后面当作后缀输出,85m2能工作良好,但是后面的例子就有点不妥了,所以将整体当作文本串原样输出,对齐方式还是遵循用户指定的对齐方式,即列中只能包含一个数值,否则原样输出

(3)非数值列

1.对前后缀非法的数值认为是非数值,按原样输出(代码中只识别了前后缀,暂未判断有效性)

2.对非法数值认为只非数值,原样输出,如100.8.8

3.double范围内不能表示的数值,同样认为是非数值,原样输出

(4)数值列超宽

普通文本列超宽实现了自动换行,数值列超宽,仍自动换行,如:

12345.6789m ,列宽7,如果超宽换行,右对齐会如下输出:

12345.6

    789m

左对齐效如下:

12345.6

789m

对齐方式

用户可以指定哪些列是右对齐,不指定右对齐的列使用左对齐方式,对齐方式通过填充半角空格实现。

数值列和对齐方式命令行参数格式

cut命令参数格式

借鉴linux下的cut命令参数的解析参见cut命令行参数解析

-aLIST 指定LIST列为右对齐

-fLIST 指定LIST列为数值列

LIST是用逗号分隔符分开的数字,从1开始,如下:

N 第N列

N-M 第N到第M列(包括M列)

N- 第N列到最后列

-N 第1列到第N列

示例

-f1,3 表示第1、3列为数值列

-f1-5,表示第1到5列为数值列

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值