如何将字符串附加到数据集中的其他字符串?

Posted

技术标签:

【中文标题】如何将字符串附加到数据集中的其他字符串?【英文标题】: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文件。

【问题讨论】:

【参考方案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 "01" -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";$_

【讨论】:

以上是关于如何将字符串附加到数据集中的其他字符串?的主要内容,如果未能解决你的问题,请参考以下文章

如何将 excel 附加到现有数据集而不丢失 Foundry 中的其他列?

一次对多列进行一次热编码并附加到主数据集?

编写并将float数组附加到C ++中hdf5文件中的唯一数据集

使用模糊逻辑连接两个数据集

将浮点数组写入和附加到 C++ 中 hdf5 文件中的唯一数据集

将数据库代码移动到单独的程序集时将连接字符串放在哪里