Как добавить строки в другие строки в наборе данных?

Я хочу добавить несколько строк в набор данных с помощью пользовательских строк.

пример

Содержание набора данных:

Test1
Test2
Test3

Результат после добавления:

Test1.com
Test2.com
Test3.com

Должен ли я использовать регулярное выражение для анализа конца каждого теста [n], чтобы иметь возможность добавить его с пользовательской строкой (.com)? У кого-нибудь есть пример, который описывает, как именно это сделать?

Я читаю из таблицы SQL и записываю значения в DataSet, который экспортируется в CSV следующим образом:

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

DataSet содержит Строки, такие как:

Banana01
Banana02
Apple01
Cherry01
Cherry02
Cherry03

Я хочу добавить .com только к Cherry01, Cherry02 и Cherry03, а после добавления .com экспортировать его как файл CSV.

Ответ 1

Есть много способов. Вот несколько:

# 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' }

Ответ 2

Вы можете использовать что-то вроде этого:

Пример 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"

Ответ 3

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