Question [] datatable, regex, update

Plus d'informations
il y a 7 ans 5 mois #27883 par Ludovic B
Bonjour à tous ,
je voudrais mettre à jour une ligne dans ma colonne Name du datatable.
la datatable est récupéré d'une requete sql
2 colonnes : Name , answer
je voudrais pour chaque ligne de la colonne Name , remplacer les caractères de l'alphabets latin (français) celui qui pose probleme c l'aspostrophe.
en Regex j'ai trouvé cela \' , je n'arrive pas à faire le regex complet
remplacer l'aspostrophe par un espace

[code:1]
# $res la datatable de la requete SQL
$res
$res.Name | where {$_.Name 'regex'} | foreach {$_.Name = \" \"}
[/code:1]

merci pour vos remarques.

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 7 ans 5 mois #27885 par Philippe
Réponse de Philippe sur le sujet Re:[] datatable, regex, update
salut ludoob

perso je ferais ça :

[code:1]$res | foreach {$_.name = $_.name -replace \",\", \" \"}code]

ça va récrire le résultat dans $res [/code:1]

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 7 ans 5 mois #27886 par Ludovic B
Réponse de Ludovic B sur le sujet Re:[] datatable, regex, update
merci 6ratgus pour cette solution
j'ai trouvé un bout de regex qui marche, il enleve bien l'apostrophe , mais je ne comprends pas son fonctionnement.

Le but c'est de faire un objet qui contient que propriété les lignes de la colonne name et comme valeur les lignes de la colonne answer.

[code:1]
$mysqlnet = [Reflection.Assembly]::LoadWithPartialName(\"MySql.Data\"«»)
if (-not $mysqlnet)
{
Write-Error \" pas de connexion\"
Exit
}

# parametre de connexion à la base mysql
$dbuser = \"root\" # le nom de l'utilisateur'
$dbpwd = \"\" # le mot de passe
$dbname = \"GLPI\" # nom de la base de donnée
$dbhost = \"localhost\" # nom hôte ou adresse IP du serveur
$dbport = 3306 # port tcp MySQL

$connexionString = \"server=$dbhost;port=$dbport;uid=$dbuser;pwd=$dbpwd;database=$dbname\"

$conn = New-Object MySql.Data.MySqlClient.MySqlConnection($connexionString)

$conn.Open()

# merci M.LaDenrée pour la requete SQL
$query = \"SELECT glpi_plugin_formcreator_questions.name, glpi_plugin_formcreator_answers.answer
FROM ``glpi_plugin_formcreator_forms``
JOIN ``glpi_plugin_formcreator_sections`` ON glpi_plugin_formcreator_sections.`plugin_formcreator_forms_id`=`glpi_plugin_formcreator_forms`.`id`
JOIN ``glpi_plugin_formcreator_questions`` ON `glpi_plugin_formcreator_questions`.`plugin_formcreator_sections_id` =glpi_plugin_formcreator_sections.`id`
LEFT OUTER JOIN ``glpi_plugin_formcreator_forms_answers`` ON `glpi_plugin_formcreator_forms_answers`.`plugin_formcreator_forms_id`=glpi_plugin_formcreator_forms.`id`
LEFT OUTER JOIN ``glpi_plugin_formcreator_answers`` ON (`glpi_plugin_formcreator_answers`.`plugin_formcreator_forms_answers_id`=`glpi_plugin_formcreator_forms_answers`.`id` AND `glpi_plugin_formcreator_answers`.`plugin_formcreator_questions_id`=`glpi_plugin_formcreator_questions`.`id`)
WHERE glpi_plugin_formcreator_forms_answers.id=182
ORDER BY glpi_plugin_formcreator_answers.answer DESC;\"



$MySqlCmd = New-Object MySql.Data.MySqlClient.MySqlCommand($query, $conn)

$DataAdapter = New-Object MySql.Data.MySqlClient.MySqlDataAdapter($MySqlCmd)

$DataSet = New-Object System.Data.DataSet

$DataAdapter.Fill($DataSet, \"data\"«»)

$res = $DataSet.Tables[\"data\"]

# resultat de la requete sql en format datatable 2 colonnes name , answer
#$res
#voir les lignes de la colonne Name
#Write-Host $res.name -ForegroundColor Yellow

#region enlever les caractères et mettre à jour la datatable
foreach ($valeur in $res.name)
{
Write-host $valeur -ForegroundColor Yellow
$regex = '[^\p{L}\p{Nd}/(/}/_]' # merci FX CAT
If ($valeur -match $regex)
{
Write-host \"Match $valeur\"
$replacevaleur = $valeur -replace $regex, ' '
$res | where { $_.Name -eq $valeur } | foreach { $_.Name = $replacevaleur }
Write-host $replacevaleur -ForegroundColor Green
}# end if
}# end foreach
#endregion enlever les caractères et mettre à jour la datatable



#region recherche name

# chercher la valeur Direction dans la colonne name
#$findquestion = \"Direction :\"

# DataView rapid filter
foreach ($findquestion in $res.name)
{
#$findquestion = $replacevaleur
write-host $findquestion
# DataView rapid filter
$dvPeople = New-Object System.Data.DataView($res)
$dvPeople.RowFilter = \"name = '$findquestion'\"
# Result
if ($dvPeople.Count -gt 0)
{
#Write-Host \"Found\" -ForegroundColor Yellow
write-host $dvPeople.answer -ForegroundColor Green
#$dvPeople.answer | ft
}
else
{
Write-Host \"Not Found!\" -ForegroundColor Red
}
}
#endregion recherche name


#$conn.Close()
[/code:1]

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.040 secondes
Propulsé par Kunena