Question nombre de 20 caractères max

Plus d'informations
il y a 8 ans 11 mois #19626 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

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

Plus d'informations
il y a 8 ans 11 mois #19629 par Laurent Dardenne
Palpelune34 écrit:

Mais je me perds dans le code vous pourriez me dire si il y a des outils plus simple pour travailler sur des chaines ?

Pour ce type de traitement je ne pense pas, puisque tu es le seul à connaitre la règle de construction.
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 \&quot;hi\&quot;
# C:\PS&gt;assert { get-item C:\test2\Documents\test2 } \&quot;File wasn't created by Set-Content!\&quot;
#
[CmdletBinding()]
param(
[Parameter(Position=0,ParameterSetName=\&quot;Script\&quot;,Mandatory=$true)]
[ScriptBlock]$condition
,
[Parameter(Position=0,ParameterSetName=\&quot;Bool\&quot;,Mandatory=$true)]
[bool]$success
,
[Parameter(Position=1,Mandatory=$true)]
[string]$message
)

$message = \&quot;ASSERT FAILED: $message\&quot;

if($PSCmdlet.ParameterSetName -eq \&quot;Script\&quot;«») {
try {
$ErrorActionPreference = \&quot;STOP\&quot;
$success = &amp;$condition
} catch {
$success = $false
$message = \&quot;$message`nEXCEPTION THROWN: $($_.Exception.GetType().FullName)\&quot;
}
}
if(!$success) {
throw $message
}
}

Function New-Name {
param (
[string] $Nom,
[string] $Prenom
)
$OldNom=$Nom
$OldPrenom=$Prenom

$Nc=$Nom.Length
$Pc=$Prenom.Length
Write-Debug \&quot;Nc=$Nc Pc=$Pc\&quot;
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 \&quot;Nom=$($Nom.Length) Prenom=$($Prenom.Length)\&quot; #&lt;%REMOVE%&gt;
Assert { ($nom+$Prenom).Count -le 20 } \&quot; New-Name : Taille erronée.\&quot; #&lt;%REMOVE%&gt;

Write-Output \&quot;$Nom$Prenom\&quot;
}#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.

Plus d'informations
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
Propulsé par Kunena