【问题标题】:How to append strings to other strings in a data set?如何将字符串附加到数据集中的其他字符串?
【发布时间】:2012-07-23 20:09:05
【问题描述】:

我想用自定义字符串在数据集中附加几个字符串。

示例

数据集内容:

Test1
Test2
Test3

追加后的结果:

Test1.com
Test2.com
Test3.com

我是否必须使用正则表达式解析到每个 Test[n] 的末尾才能附加自定义字符串 (.com)?有没有人有一个确切描述如何做到这一点的例子?

我正在从 SQL 表中读取数据并将值写入数据集,该数据集通过以下方式导出到 CSV:

$DataSet.Tables[0] | ConvertTO-Csv -Delimiter ',' -NotypeInformation |`% { $_ -replace '"','' } |  out-file  $outfile -Encoding "unicode"

DataSet 包含如下字符串:

Banana01
Banana02
Apple01
Cherry01
Cherry02
Cherry03

我想做的是将.com仅附加到Cherry01Cherry02Cherry03,并在附加.com之后,将其导出为CSV文件。

【问题讨论】:

    标签: string powershell append


    【解决方案1】:

    你可以这样使用:

    示例 1

    $t = "test"
    $t = $t + ".com"
    

    示例 2

    $test = @("test1","test2")
    
    $test | ForEach-Object {
    $t = $_ + ".com"
    Write-Host $t}
    

    使用您添加的代码,我做到了这一点。我没有用于测试的数据库,所以我手动创建了数据集,因此您可能只需将代码中的 $DataSet[0] 更改为 $DataSet。表[0]

    $DataSet[0] | ConvertTO-Csv -Delimiter ',' -NotypeInformation  | Foreach-Object{$T=$_
    IF($T -match "(Cherry\d\d)"){$T = $T -replace "(Cherry\d\d)(.+)",'$1.com$2'};$T } |  out-file  $outfile -Encoding "unicode"
    

    【讨论】:

    • 谢谢。我已经在我的帖子中发布了一些代码,如果你可以看看它会很酷。
    • 它很难测试,因为我没有访问 sql 的权限,所以请检查一下,如果它不正确,我可以尝试为您解决。
    • 谢谢。但我认为这样每个字符串都会被附加,无论它以什么开头。但我只想附加那些以“Cherry#”开头的.com,正如我在我的初始帖子的编辑中发布的那样。
    • 好吧,抱歉没有看到那部分在我编辑后现在尝试代码,编辑后的代码检查是否有任何东西被称为樱桃+两位数,例如cherry00,cherry01,cherry99
    • 谢谢。我已经对其进行了测试,它似乎可以工作,但是如果我在数据集中有这样的东西怎么办:Cherry01,fruit,yummy 那么.com 将附加到 yummy 是什么使它成为 Cherry01,fruit,yummy.com。如果我只想在名称 Cherry01 之后插入它,它看起来像:Cherry01.com,fruit,yummy
    【解决方案2】:

    有很多方法。以下是一些:

    # Using string concatenation
    'Test1','Test2','Test3' | Foreach-Object{ $_ + '.com' }
    
    # Using string expansion
    'Test1','Test2','Test3' | Foreach-Object{ "$_.com" }
    
    # Using string format
    'Test1','Test2','Test3' | Foreach-Object{ "{0}{1}" -f $_,'.com' }
    

    【讨论】:

    • 谢谢。你能给我一个与我发布的代码相关的例子吗?
    • 您要附加到的每个值的列标题是什么?
    • 我要附加的所有字符串都有标题“vmname”
    • 尝试类似: ... | Foreach-Object{ $_.vmname + '.com' }
    • $DataSet.Tables[0] | ConvertTO-Csv -Delimiter ',' -NotypeInformation |`% { $_ -replace '"','' }| Foreach-Object {$T=$_.vmname if($T -match "ESX\d\d" -or $T -match "ESX\d\d\d") {$T + '.com'} Else{$T} } | out-file $outfile -Encoding "unicode" 给了我一个空的结果。
    【解决方案3】:

    $array | %{if($_ -match "^Cherry\d\d"){$_ += ".com"};$_}

    【讨论】:

      猜你喜欢
      • 2023-03-22
      • 2012-01-12
      • 2018-06-23
      • 1970-01-01
      • 2016-03-02
      • 1970-01-01
      • 2023-01-19
      • 2014-10-26
      • 2012-07-18
      相关资源
      最近更新 更多