Question
nombre de 20 caractères max
- Gilles
- Auteur du sujet
- Hors Ligne
- Membre junior
Réduire
Plus d'informations
- Messages : 21
- Remerciements reçus 0
il y a 8 ans 11 mois #19626
par Gilles
nombre de 20 caractères max a été créé par Gilles
Bonjour,
je me retrouve confronté à un problème :
j'ai 2 variables $prenom et $nom string
j'ai pour obligation : $prenom + $nom doit être
inférieur ou égale à 20 caractères.
Mais si $prenom+$nom >20 d'abord supprimer des caractères de $prénom pour que au minimum la longueur de $prenom soit de un caractère.
Du coup je me sert de la propriété $user.length d'une variable $user = $prenom + $nom
et pour ma boucle diminution du nombre de caractère de $prenom
$prenom=$prenom.remove(x,y)
Mais je me perds dans le code vous pourriez me dire si il y a des outils plus simple pour travailler sur des chaines ?
Merci d'avance<br><br>Message édité par: Palpelune34, à: 3/05/15 09:08
je me retrouve confronté à un problème :
j'ai 2 variables $prenom et $nom string
j'ai pour obligation : $prenom + $nom doit être
inférieur ou égale à 20 caractères.
Mais si $prenom+$nom >20 d'abord supprimer des caractères de $prénom pour que au minimum la longueur de $prenom soit de un caractère.
Du coup je me sert de la propriété $user.length d'une variable $user = $prenom + $nom
et pour ma boucle diminution du nombre de caractère de $prenom
$prenom=$prenom.remove(x,y)
Mais je me perds dans le code vous pourriez me dire si il y a des outils plus simple pour travailler sur des chaines ?
Merci d'avance<br><br>Message édité par: Palpelune34, à: 3/05/15 09:08
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
Réduire
Plus d'informations
- Messages : 6302
- Remerciements reçus 68
il y a 8 ans 11 mois #19629
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:nombre de 20 caractères max
Palpelune34 écrit:
Si j'ai bien compris ton pb voici une solution à valider :
[code:1]
function Assert {
#from : poshcode.org/1942
#.Example
# set-content C:\test2\Documents\test2 \"hi\"
# C:\PS>assert { get-item C:\test2\Documents\test2 } \"File wasn't created by Set-Content!\"
#
[CmdletBinding()]
param(
[Parameter(Position=0,ParameterSetName=\"Script\",Mandatory=$true)]
[ScriptBlock]$condition
,
[Parameter(Position=0,ParameterSetName=\"Bool\",Mandatory=$true)]
[bool]$success
,
[Parameter(Position=1,Mandatory=$true)]
[string]$message
)
$message = \"ASSERT FAILED: $message\"
if($PSCmdlet.ParameterSetName -eq \"Script\"«») {
try {
$ErrorActionPreference = \"STOP\"
$success = &$condition
} catch {
$success = $false
$message = \"$message`nEXCEPTION THROWN: $($_.Exception.GetType().FullName)\"
}
}
if(!$success) {
throw $message
}
}
Function New-Name {
param (
[string] $Nom,
[string] $Prenom
)
$OldNom=$Nom
$OldPrenom=$Prenom
$Nc=$Nom.Length
$Pc=$Prenom.Length
Write-Debug \"Nc=$Nc Pc=$Pc\"
If (($Nc+$Pc) -gt 20)
{
if ($Nc -gt 19)
{
$Nom=$Nom.Remove(19)
$Borne=1
}
else
{ $Borne=20-$Nc }
$Prenom=$Prenom.SubString(0,$Borne)
}
#Debug
Write-warning \"Nom=$($Nom.Length) Prenom=$($Prenom.Length)\" #<%REMOVE%>
Assert { ($nom+$Prenom).Count -le 20 } \" New-Name : Taille erronée.\" #<%REMOVE%>
Write-Output \"$Nom$Prenom\"
}#New-Name
#Test
$N='!NABCDEFGHIJKLMNOPQRSTUVWXYZ'
$P='*P12345678901234567890123456'
2..($N.Length)|% {
New-Name ($N.Substring(0,$_)) $P
}
2..($N.Length)|% {
New-Name $N ($P.Substring(0,$_))
}
2..($N.Length)|% {
New-Name ($N.Substring(0,$_)) ($P.Substring(0,$_))
}
[/code:1]<br><br>Message édité par: Laurent Dardenne, à: 4/05/15 13:31
Pour ce type de traitement je ne pense pas, puisque tu es le seul à connaitre la règle de construction.Mais je me perds dans le code vous pourriez me dire si il y a des outils plus simple pour travailler sur des chaines ?
Si j'ai bien compris ton pb voici une solution à valider :
[code:1]
function Assert {
#from : poshcode.org/1942
#.Example
# set-content C:\test2\Documents\test2 \"hi\"
# C:\PS>assert { get-item C:\test2\Documents\test2 } \"File wasn't created by Set-Content!\"
#
[CmdletBinding()]
param(
[Parameter(Position=0,ParameterSetName=\"Script\",Mandatory=$true)]
[ScriptBlock]$condition
,
[Parameter(Position=0,ParameterSetName=\"Bool\",Mandatory=$true)]
[bool]$success
,
[Parameter(Position=1,Mandatory=$true)]
[string]$message
)
$message = \"ASSERT FAILED: $message\"
if($PSCmdlet.ParameterSetName -eq \"Script\"«») {
try {
$ErrorActionPreference = \"STOP\"
$success = &$condition
} catch {
$success = $false
$message = \"$message`nEXCEPTION THROWN: $($_.Exception.GetType().FullName)\"
}
}
if(!$success) {
throw $message
}
}
Function New-Name {
param (
[string] $Nom,
[string] $Prenom
)
$OldNom=$Nom
$OldPrenom=$Prenom
$Nc=$Nom.Length
$Pc=$Prenom.Length
Write-Debug \"Nc=$Nc Pc=$Pc\"
If (($Nc+$Pc) -gt 20)
{
if ($Nc -gt 19)
{
$Nom=$Nom.Remove(19)
$Borne=1
}
else
{ $Borne=20-$Nc }
$Prenom=$Prenom.SubString(0,$Borne)
}
#Debug
Write-warning \"Nom=$($Nom.Length) Prenom=$($Prenom.Length)\" #<%REMOVE%>
Assert { ($nom+$Prenom).Count -le 20 } \" New-Name : Taille erronée.\" #<%REMOVE%>
Write-Output \"$Nom$Prenom\"
}#New-Name
#Test
$N='!NABCDEFGHIJKLMNOPQRSTUVWXYZ'
$P='*P12345678901234567890123456'
2..($N.Length)|% {
New-Name ($N.Substring(0,$_)) $P
}
2..($N.Length)|% {
New-Name $N ($P.Substring(0,$_))
}
2..($N.Length)|% {
New-Name ($N.Substring(0,$_)) ($P.Substring(0,$_))
}
[/code:1]<br><br>Message édité par: Laurent Dardenne, à: 4/05/15 13:31
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Gilles
- Auteur du sujet
- Hors Ligne
- Membre junior
Réduire
Plus d'informations
- Messages : 21
- Remerciements reçus 0
il y a 8 ans 11 mois #19670
par Gilles
Réponse de Gilles sur le sujet Re:nombre de 20 caractères max
merci pour cette réponse je vais tester
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.067 secondes
- Vous êtes ici :
- Accueil
- forum
- PowerShell
- Entraide pour les débutants
- nombre de 20 caractères max