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

PowerShell CSV处理:请求修复Ticker非空取子串、空值用SEDOL的代码

PowerShell CSV字段处理代码修复

需求说明

处理CSV中的Ticker字段:

  • 若Ticker字段非空,提取其从第2位开始的子串(即跳过第一个字符)
  • 若Ticker字段为空,使用SEDOL字段从第2位开始的子串填充Ticker

原代码存在的问题

  1. 判断逻辑错误:直接对Ticker调用Substring(1)来判断是否为空,会导致Ticker为空时抛出异常(空字符串没有索引1的字符)
  2. 语法错误:else块里多套了一层花括号{},这会把赋值语句变成未执行的脚本块,无法完成赋值
  3. 未做异常防护:没有考虑SEDOL字段也可能为空的情况,直接调用Substring(1)同样会报错

修复后的代码

# 读取指定范围的CSV内容并转换为对象
$pos = $text | Select-Object -Skip $i -First ($end-$i) | ConvertFrom-Csv

# 遍历处理每个对象的Ticker字段
$pos | ForEach-Object {
    # 先判断Ticker是否非空且长度足够
    if (-not [string]::IsNullOrWhiteSpace($_.Ticker) -and $_.Ticker.Length -ge 1) {
        $_.Ticker = $_.Ticker.Substring(1)
    }
    # 判断SEDOL是否可用,避免报错
    elseif (-not [string]::IsNullOrWhiteSpace($_.SEDOL) -and $_.SEDOL.Length -ge 1) {
        $_.Ticker = $_.SEDOL.Substring(1)
    }
    # 可选:两个字段都为空时的默认处理
    else {
        $_.Ticker = "" # 也可设置为"NA"这类默认标识
    }
}

代码说明

  • 用[string]::IsNullOrWhiteSpace()判断字段是否为空或仅含空白字符,比直接判断$_.Ticker -ne ""更严谨
  • 增加字段长度判断,确保调用Substring(1)时不会因字符串过短抛出异常
  • 移除else块多余的花括号,让赋值语句直接执行
  • 补充SEDOL字段的有效性判断,避免SEDOL为空时出现错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 10:52:16