You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell文本格式化:补全变量列缺失的右侧单引号

解决PowerShell格式转换中的引号缺失问题

需求说明

原始文件内容:

pc_cc_text$fx_review1  CONSTANT VARCHAR2(100) := 'For Company Review'; -- AD_PRT_AUTH_(MSP)
pc_cc_text$fx_review2  CONSTANT VARCHAR2(100) := 'For Dept Review'; -- AD_PRT_AUTH_(ADX)

需要转换为以下格式:

WHEN 'pc_cc_text$fx_review1' THEN 'For Company Review' 
WHEN 'pc_cc_text$fx_review2' THEN 'For Dept Review'

现有问题

使用原PowerShell脚本执行后,变量名右侧的单引号缺失,输出结果如下:

WHEN 'pc_cc_text$fx_review1    THEN  'For Company Review'
WHEN 'pc_cc_text$fx_review2    THEN  'For Dept Review'

解决方案

改用正则表达式精准捕获变量名和常量值,替换原分步替换的逻辑,修改后的脚本如下:

Get-Content FILE | Where-Object { $_ -match ':=' -and $_ -notmatch '^--' } | ForEach-Object {
    if ($_ -match '^\s*(\w+\$?\w+)\s+CONSTANT\s+VARCHAR2\(\d+\)\s+:=\s*(.*?);') {
        "WHEN '$($matches[1])' THEN $($matches[2])"
    }
}

脚本说明

  • 用Where-Object过滤有效行:包含:=且不是以--开头的注释行
  • 通过正则表达式^\s*(\w+\$?\w+)\s+CONSTANT\s+VARCHAR2\(\d+\)\s+:=\s*(.*?);捕获两个关键部分:
    • 第一个分组(\w+\$?\w+):匹配带$符号的变量名
    • 第二个分组(.*?);:匹配包含单引号的常量值(截止到分号前)
  • 直接拼接成目标格式字符串,确保变量名被单引号正确包裹,同时保留常量值的原有格式

内容的提问来源于stack exchange,提问作者user27817415

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 08:32:01