Как добавить строки в другие строки в наборе данных?
Я хочу добавить несколько строк в набор данных с помощью пользовательских строк.
пример
Содержание набора данных:
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"};$_}