@[TOC]剔除单元格的前后字符串
有些csv文档,单元格中隐藏了前后字符串,例如"2021-09-10 13:24:17 "这种,利用wps js宏,结合正则表达式,可以剔除。
1.更改前的:
2.更改后的:
可以看出A5:A10单元格的数据改变了。
3.代码如下:
function txta(){
String.prototype.trim = function () {
return this.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, '');
};
var tepStrA="2021-09-10 13:24:17 ";
Debug.Print(tepStrA);
var tepStrB = tepStrA.trim();
Debug.Print(tepStrB);
/**以上实例,利用了正则;原来A5单元格字符串是"2021-09-10 13:24:17 ",
经过替换后变成了2021/9/10 13:24:17;删除了前后空格,直接变更为数字格式
利用这个,可以批量实现替换
*/
for(var tepA = 5;tepA<= ActiveWorkbook.Sheets.Item(1).UsedRange.Cells.Rows.Count; tepA++ ){
tepStrA = ActiveWorkbook.Sheets.Item(1).Cells.Item(tepA,1).Value2;
var tepStrB = tepStrA.trim();
ActiveWorkbook.Sheets.Item(1).Cells.Item(tepA,1).Value2 = tepStrB;
}
4.这里增加了String.prototype.trim()一个正则函数功能;利用replace(/1+|[\s\uFEFF\xA0]+$/g, ‘’),把前后空格剔除,其中\s:空格;\uFEFF:字节次序标记字符;\xA0:禁止自动换行空白符。
5.tepA,tepStrA,tepStrB是定义变量;6.ActiveWorkbook.Sheets.Item(1).UsedRange.Cells.Rows.Count,表示当前工作表的总行数,这里返回第10行
7.将需要更换的字符串先存放在tepStrA,经过正则替换,再把替换后放在tepStrB;然后把tepStrB放回单元格中;当然这一句也可以改为:
改前:
var tepStrB = tepStrA.trim();
ActiveWorkbook.Sheets.Item(1).Cells.Item(tepA,1).Value2 = tepStrB;
改后:
ActiveWorkbook.Sheets.Item(1).Cells.Item(tepA,1).Value2 = tepStrA.trim();
仅供参考
\s\uFEFF\xA0 ↩︎