Albert Einstein: ... la nostra conoscenza, se paragonata alla realta' e' primitiva e infantile. Eppure e' il bene piu' grande che possediamo.
... all our science, measured against reality, is primitive and childlike-and yet it is the most precious thing we have.
Informatica : Code snippets (Strings)
Gli ultimi n caratteri di una stringa
I frammenti di codice (snippets) listati sotto, implementano, nei differenti linguaggi usati, una funzione che restituisce gli ultimi n caratteri di una stringa. Alla funzione diamo il nome di 'Right'.
Linguaggio: PASCAL
Parametri : St = stringa : quanti = quanti caratteri Ritorna : Una stringa composta dagli ultimi 'quanti' : caratteri di 'St'
procedure Right(VAR St:String; quanti:integer); var p : Integer; begin if length(St) <= quanti then exit; p:=length(st)-Quanti+1; St:=Copy(st,P,Quanti); end;
function Right(St:String; quanti:integer):String; var p : Integer; begin if length(St) <= quanti then begin Right:=St; exit; end; p:=length(st)-Quanti+1; Right:=Copy(st,P,Quanti); end;
Linguaggio: Assembler 80286
Parametri : S = stringa : Quanti = quanti caratteri Ritorna : Una stringa composta dagli ultimi 'Quanti' : caratteri di 'S' : Commenti : Questa versione assembler, e' scritta : con le convenzioni : usate nell'object pascal di Borland (c), : per interfacciare : codice Pascal con codice Assembler. : N.B. In piu' presuppone che la stringa : sia SHORT; max 255 caratteri : e nel primo byte : la lunghezza corrente : della stringa stessa. :
; function Right(S:String; Quanti:Integer):String; ; RightRes EQU DWORD PTR [BP+12] RightS EQU DWORD PTR [BP+8] RightQ EQU BYTE PTR [BP+6] ; Right PROC FAR ; PUSH BP MOV BP,SP PUSH DS LDS SI,RightS LES DI,RightRes CLD LODSB ; carico len src OR AL,AL JNZ RIOK STOSB JMP FINE5 RIOK: MOV CL,AL ; salvo len(src) in CL CMP AL,RightQ ; quanti ne vuole ? JA RIGTA ; meno OK passali MOV CL,AL ; di piu' o uguale XOR CH,CH ; copio tutto da [0] a len INC CX ; +1 copia anche [0] DEC SI REP MOVSB JMP FINE5 RIGTA: MOV AL,RightQ ; STOSB ; s[0]= Q ; len(src) in CX XOR CH,CH ; vado avanti SUB CL,RightQ ; CX-Q+1 (+1 no per back-pos) REP LODSB ; posizionata ; sul primo tocopy MOV CL,RightQ XOR CH,CH REP MOVSB ; copia CX chars FINE5: POP DS MOV SP,BP POP BP RET 6 ; Right ENDP
Linguaggio: C#
Parametri : S = stringa : qv = quanti caratteri Ritorna : Una stringa composta dai primi 'qv' caratteri di 's'
public string Right(string s, int qv) { if (qv > s.Length) { return (s); } else { return (s.Substring(s.Length-qv, qv)); } }
N.B. Borland e Delphi7, DotNet e Microsoft sono marchi registrati ed appartengono ai leggittimi proprietari.
Metti la scheda negli appuntiVisualizza appuntiAzzera appunti