BigQuery中如何移除字符串字段值的前导0
字符串前导零移除实现方法
需求是对部门列表数据,保留表头Department不变,移除其余每行编码开头的连续前导零,不改动字符串其余位置的内容。
核心处理逻辑:匹配每行开头的连续字符0,在确认后续跟着有效编码字符(数字/大写字母)的前提下,将匹配到的前导零替换为空即可,不会误删字符串其他位置的0。
不同场景的实现代码
通用正则规则
支持多行匹配的正则表达式为^0+(?=[0-9A-Z]),搭配多行匹配模式使用即可逐行处理。规则说明:
^0+匹配行首的1个或多个0,(?=[0-9A-Z])做正向校验,保证匹配到的0后面是有效编码内容,不会出现空匹配、误匹配其他位置0的问题。JavaScript 实现
const rawData = `Department 026P-PLUMBING 0021-LUMBER 029B-KITCHEN AND BATH 025H-HARDWARE (25H) 0022-BUILDING MATERIALS`; const result = rawData.replace(/^0+(?=[0-9A-Z])/gm, ''); // 输出结果和预期完全一致
- Python 实现
import re raw_data = """Department 026P-PLUMBING 0021-LUMBER 029B-KITCHEN AND BATH 025H-HARDWARE (25H) 0022-BUILDING MATERIALS""" result = re.sub(r'^0+(?=[0-9A-Z])', '', raw_data, flags=re.M) # 输出结果和预期完全一致
- Excel 表格场景实现
如果数据存储在Excel表格A列,A1为表头Department,从A2开始为部门编码,可在B2单元格输入以下公式,下拉填充即可完成处理:=REPLACE(A2,1,FIND(LEFT(SUBSTITUTE(A2,"0",""),1),A2)-1,"")
以上方法处理后输出的结果完全匹配预期:表头保持原样,各部门编码开头的多余前导零全部清除,短横线后的部门名称、括号内的编码后缀都不会被改动。
内容的提问来源于stack exchange,提问作者Jaskeil
相关产品推荐
相关产品推荐

