Je souhaite ajouter plusieurs chaînes dans un ensemble de données avec des chaînes personnalisées.
Exemple
Contenu de l'ensemble de données:
Test1
Test2
Test3
Résultat après ajout:
Test1.com
Test2.com
Test3.com
Dois-je utiliser l'expression régulière pour analyser à la fin de chaque test [n] pour pouvoir l'ajouter avec une chaîne personnalisée (.com
)? Quelqu'un at-il un exemple qui décrit exactement comment le faire?
Je lis à partir d'une table SQL et j'écris des valeurs dans un DataSet qui est exporté vers CSV de la manière suivante:
$DataSet.Tables[0] | ConvertTO-Csv -Delimiter ',' -NotypeInformation |`% { $_ -replace '"','' } | out-file $outfile -Encoding "unicode"
Le DataSet contient des chaînes telles que:
Banana01
Banana02
Apple01
Cherry01
Cherry02
Cherry03
La chose que je veux faire est d'ajouter .com
à seulement Cherry01
, Cherry02
, et Cherry03
, et après avoir ajouté .com
, exportez-le sous forme de fichier CSV.
Il y a plusieurs façons. Voici quelques-uns:
# 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' }
Vous pouvez utiliser quelque chose comme ceci:
Exemple 1
$t = "test"
$t = $t + ".com"
Exemple 2
$test = @("test1","test2")
$test | ForEach-Object {
$t = $_ + ".com"
Write-Host $t}
Avec votre code ajouté, je l'ai fait. Je n'ai pas de base de données pour le tester, j'ai donc fait le jeu de données manuellement, vous devrez peut-être simplement changer $ DataSet [0] dans mon code en $ DataSet .Tables [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"
$array | %{if($_ -match "^Cherry\d\d"){$_ += ".com"};$_}