Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Conversione delle funzioni VBScript in Javascript

Analisi delle funzioni VBScript e codice completo della libreria
Analisi delle funzioni VBScript e codice completo della libreria
Link copiato negli appunti

Javascript ed VBScript sono i due principali linguaggi di scripting lato
client utilizzati nelle pagine HTML. Dei pro e dei contro di entrambi si è parlato
fino all'inverosimile, tanto che la classica domanda "Quale linguaggio mi conviene
imparare ed utilizzare?" è tra le più gettonate su tutti i principali forum
di discussione o newsgroup.

La domanda che, personalmente, non ho mai sentito nè letto è: "Posso utilizzarli
insieme in un'unica applicazione?". Presumo che le risposte siano state sempre
vaghe o davvero poco esemplificative, o comunque non del tutto complete. Lo scopo
di questo articolo è quello di tentare di fornire la più esauriente possibile
delle risposte alla seconda domanda, quella che io non ho mai sentito. L'esposizione
avverrà in due parti, per non appesantire l'articolo e la vostra attenzione.
Alla seconda parte allegheremo l'intera libreria, pronta per essere utilizzata
nel vostro prossimo progetto.

Perchè convertire delle
funzioni da un linguaggio all'altro?

Personalmente non amo il VBScript (e nemmeno il Visual Basic, per quanto lo
conosca e lo utilizzi nei miei progetti). Questo linguaggio comprende però
diverse funzioni molto interessanti, complete e semplici da usare. Il mio obiettivo
è stato pertanto quello di creare una libreria che le raccolga e le metta
a disposizione del Javascript, per renderlo ancora più potente e versatile. Un'avvertenza: VBScript è eseguito lato client solo su Internet
Explorer per Windows, per cui gli esempi che vedremo non funzionano su altri browser
e altre piattaforme. Tra l'altro, proprio questa incompatibilità diventa un motivo in più per convertire, visto che Javascript è invece eseguibile su praticamente tutti i browser.

Cominciamo con l'elencare le funzioni VBScript che ho convertito. Di seguito
spiegherò il loro funzionamento e il loro scopo, illustrando un esempio
del loro utilizzo in VBScript:

  • Now()
  • Time()
  • Date()
  • Len()
  • UBound()
  • CInt()
  • CStr()
  • CBool()
  • Replace()
  • Split()
  • Left()
  • UCase()
  • LCase()
  • Trim()

Now()

La funzione Now() restituisce la data e l'ora corrente in formato

gg/mm/aa hh.mm.ss

Un esempio in VBScript:

<script type="vbscript">
Document.Write(Now())
</script>

che restituisce

Date()

La funzione Date() restituisce la data corrente in formato

gg/mm/aa

Un esempio in VBScript:

<script type="vbscript">
Document.Write(Date())
</script>

che restituisce

Time()

La funzione Time() restituisce l'orario corrente in formato

hh.mm.ss

Un esempio in VBScript:

<script type="vbscript">
Document.Write(Time())
</script>

che restituisce

Len()

La funzione Len() restituisce la lunghezza di una stringa.

Un esempio in VBScript:

<script type="vbscript">
Dim MiaStringa
MiaStringa = "lukeonweb.net"
Document.Write("La stringa " & MiaStringa & " è composta da " & Len(MiaStringa)
& " caratteri")
</script>

che restituisce

UBound()

La funzione UBound() è simile alla precedente, ma restituisce la lunghezza
degli items di un array.

Un esempio in VBScript:

<script type="vbscript">
Dim MioArray(3)
MioArray(0) = "Pippo"
MioArray(1) = "Pluto"
MioArray(2) = "Paperino"
Document.Write("L'array MioArray è composto da " & UBound(MioArray) & " items")

</script>

Il risultato sarà:

La funzione si utilizza anche per eseguire un ciclo sull'array:

<script type="vbscript">
Dim MioArray(3)
MioArray(0) = "Pippo"
MioArray(1) = "Pluto"
MioArray(2) = "Paperino"
Dim i i = 0
For i = 0 To UBound(MioArray)
Document.Write(MioArray(i) & "<br>")
Next
</script>

Il risultato sarà:

CInt()

La funzione CInt converte una stringa numerica in un tipo numerico
intero.

Un esempio in VBScript:

<script type="vbscript">
Dim a
a = "1"
Document.Write(CInt(a))
</script>

CStr()

La funzione CStr converte un qualsiasi tipo di dato in stringa.

Un esempio in VBScript:

<script type="vbscript">
Dim a
a = "lukeonweb.net"
Document.Write(CInt(a))
</script>

CBool()

La funzione CBool restituisce un valore booleano in formato stringa,
a seconda della lingua del sistema operativo su cui viene eseguito lo script (in
italiano Vero o Falso).

Un esempio in VBScript:

<script type="vbscript">
Dim a, b
a = 1
b = 2
Document.Write(CBool(a = b))
</script>

Essendo a diverso da b, il risultato sarà Falso.

Replace()

La funzione CBool sostituisce un carattere, o una serie di caratteri
specificati, con un altro carattere o con un'altra serie di caratteri.

Un esempio in VBScript:

<script type="vbscript">
Document.Write(Replace("lukeonweb.net", "net", "com"))
</script>

Sostituisce il suffisso del dominio da net a com, restituendo
la stringa lukeonweb.com.

Split()

La funzione Split(), insieme alla funzione Replace(), è tra
quelle più utili ed interessanti relativamente alla manipolazione delle stringhe.
Il suo compito è quello di dividere una stringa in un array, o per meglio dire,
in un "array di stringa", in funzione di un carattere o di una sequenza definita
di caratteri specificati.

Un esempio in VBScript:

<script type="vbscript">
Dim MiaStringa, MioArray
MiaStringa = "lukeonweb.net"
MioArray = Split(MiaStringa, ".")
Document.Write(MioArray(0))
</script>

Abbiamo effettuato lo split per il carattere punto (.) ed il risultato sarà
il primo item dell'array di stringa che abbiamo creato, in questo caso lukeonweb,
mentre

Document.Write(MioArray(1))

restituirà il secondo item dell'array di stringa, ovvero net.

Left()

La funzione Left() restituisce una porzione di stringa a partire dal
primo carattere fino al numero che corrisponde al carattere specificato come parametro
all'interno della funzione stessa.

Un esempio in VBScript:

<script type="vbscript">
Dim stringa
stringa = "lukeonweb.net"
Document.Write(Left(stringa, 4))
</script>

Restituirà in output la stringa luke.

UCase()

La funzione UCase() converte una stringa in maiuscolo.

Un esempio in VBScript:

<script type="vbscript">
Dim stringa
stringa = "LukeOnWeb.Net"
Document.Write(UCase(stringa))
</script>

Restituisce la stringa LUKEONWEB.NET.

LCase()

La funzione LCase() converte una stringa in minuscolo.

Un esempio in VBScript:

<script type="vbscript">
Dim stringa
stringa = "LukeOnWeb.Net"
Document.Write(LCase(stringa))
</script>

Restituisce la stringa lukeonweb.net.

Trim()

La funzione Trim() elimina gli spazi superflui sulla destra e sulla
sinistra di una stringa.

Un esempio in VBScript:

<script type="vbscript">
Dim stringa
stringa = " lukeonweb.net "
Document.Write(Trim(stringa))
</script>

Dopo aver analizzato le principali funzioni di VBScript, creeremo adesso una
libreria Javascript in cui inserirle. Si creerà, in particolare, il file
vbscript.js che potrà essere utilizzato in tutti i nostri siti o progetti,
senza dovere mai subire alcuna modifica. La richiameremo ogni volta con la semplice
istruzione:

<script language="javascript" type="text/javascript" src="/percorso/vbscript.js"></script>

Conversione della funzione Now()

Abbiamo visto com'è semplice in VBScript ottenere la data e l'ora in un solo
colpo. Di seguito la funzione Javascript che ci consente di scrivere la data e
l'ora richiamando la funzione Now() da aggiungere alla nostra libreria
di funzioni:

function Now() { var oggi = new Date();
var giorno = oggi.getDate();
var mese = (oggi.getMonth() + 1);
var anno = oggi.getFullYear();
var ora = oggi.getHours();
var minuti = oggi.getMinutes();
var secondi = oggi.getSeconds();
return giorno + "/" + mese + "/" + anno + " " + ora + ":" + minuti + ":" + secondi;

}

Per richiamarla è sufficiente accedere al nome della funzione:

document.write("Oggi è " + Now());

Conversione della funzione Date()

In Javascript esiste già una funzione Date() ma non svolge la
stessa funzione del Date() di VBScript: si occupa della creazione di un
nuovo oggetto programmabile con una serie di metodi che accedono alle varie componenti
dell'orario (giorno, mese, anno, ora, minuti, secondi, millisecondi, ecc...).
Per questo motivo, non possiamo creare una funzione che abbia lo stesso nome!
Basterà comunque utilizzare un altro carattere nell'assegnazione del nome alla
funzione, ad esempio un underscore (_) prima della prima lettera: avremo quindi
la funzione _Date(). Di seguito il codice da aggiungere alla libreria:

function _Date() { var oggi = new Date();
var giorno = oggi.getDate();
var mese = (oggi.getMonth() + 1);
var anno = oggi.getFullYear();
return giorno + "/" + mese + "/" + anno;
}

Per accedere alla funzione _Date() utilizzeremo il codice:

document.write(_Date());

Conversione della funzione Time()

Come abbiamo visto, la funzione Time() di VBScript restituisce l'orario
corrente. Ecco il codice Javascript da aggiungere alla libreria:

function Time() { var oggi = new Date();
var ora = oggi.getHours();
var minuti = oggi.getMinutes();
var secondi = oggi.getSeconds();
return ora + ":" + minuti + ":" + secondi;
}

Semplice, a questo punto, accedere alla funzione:

document.write(Time());

Conversione della funzione Len()

Javascript utilizza la proprietà length dell'oggetto String
per ottenere la lunghezza di una stringa in termini di caratteri da cui è composta.
La differenza che passa tra la proprietà length di Javascript e la funzione
Len() di VBScript è in sostanza nulla, ma a mio avviso è molto più
comodo e sicuro, in certi casi, accedere ad una funzione piuttosto che utilizzare
una proprietà. Di seguito il codice da aggiungere alla libreria:

function Len(StringToLenght) {
return StringToLenght.length;
}

Per richiamarla è sufficiente accedere al nome della funzione
passandole come parametro la stringa di cui si vuole conoscere o calcolare la
lunghezza:

var stringa = "lukeonweb.net";
document.write("La stringa " + stringa + " è composta da " + Len(stringa) + "
caratteri");

Conversione della funzione UBound()

Simile alla precedente la funzione UBound. Anche in
questo caso, Javascript utilizza la proprietà length, quindi la differenza
tra Len e UBound() esiste solo per VBScript. Ad ogni modo, io trovo
molto comodo disporre di questa funzione quando devo eseguire un ciclo su un array.
Di seguito il codice da aggiungere alla libreria:

function UBound(ArrayToLength) { return ArrayToLength.length;
}

Per utilizzare la funzione appena creata è necessario disporre
di un array. Di seguito un esempio:

var i = 0;
var alfabeto = new Array();
alfabeto[0] = "AAA"
alfabeto[1] = "BBB"
alfabeto[2] = "CCC"
for (i=0; i<UBound(alfabeto); i++) {
document.write(alfabeto[i] + "<br>");
}

Conversione della funzione CInt()

In Javascript si utilizza la funzione parseInt() per
convertire una stringa numerica in un reale numero intero o per controllarne il
tipo di dato. La funzione CInt() del VBScript può essere convertita come
segue, aggiungendo il codice alla libreria:

function CInt(StringToConvertInInteger) {
return parseInt(StringToConvertInInteger);
}

Per verificare che la conversione sia andata a buon fine si
può utilizzare un alert per controllare il tipo di dato restituito

alert(typeof(CInt("1")));

Restituirà in output number.

Conversione della funzione CStr()

Il concetto è del tutto uguale al precedente paragrafo in cui
abbiamo convertito la funzione CInt(). Javascript utilizza la forma:

String("lukeonweb.net");

per convertire in stringa un valore, oppure la forma:

var stringa = new String("lukeonweb.net");

per creare una variabile di tipo stringa a tutti gli effetti.
La conversione della funzione CStr() può avvenire nel seguente modo:

function CStr(ValueToConvertInString) {
return String(ValueToConvertInString);
}

Anche in questo caso per verificare che la conversione sia andata
a buon fine si può utilizzare un alert per controllare il tipo di dato restituito:

alert(typeof(CStr("lukeonweb.net")));

Restituirà string.

Aggiungere questo codice alla libreria.

Conversione della funzione CBool()

L'equivalente Javascript della funzione CBool() di VBScript
è Boolean(). La differenza è che in Javascript il risultato sarà sempre
true o false a prescindere dal sistema operativo che esegue lo script. Aggiungere
il seguente codice alla libreria vbscript.js:

function CBool(ValueToConvertInBoolean) {
return Boolean(ValueToConvertInBoolean);
}

Per verificare che la conversione sia andata a buon fine si
può utilizzare il seguente codice di controllo:

var a, b; a = 1; b = 2; document.write(CBool(a == b));

che restituirà false.

Conversione della funzione Replace()

Per effettuare la sostituzione di un carattere o di una sequenza di caratteri
con un altro carattere o con un'altra sequenza di caratteri, Javascript utilizza
il metodo replace() dell'oggetto String che io, personalmente, trovo
molto scomodo, sporattutto perchè non è possibile effettuare un replace (che in
inglese sta letteralmente per "sostituzione") su più stringhe senza dichiarare
tante variabili quante le stringhe su cui effettuare la sostituzione. E, in generale,
trovo sempre più comoda e sicura una funzione. Aggiungiamo quindi alla nostra
libreria il codice seguente:

function Replace(StringToReplace, StringToChange, StringChangedIn)
{
return StringToReplace.replace(StringToChange, StringChangedIn);
}

Per accedere alla nuova funzione Replace() di Javascript
è possibile utilizzare un codice come quello di esempio:

var stringa = "lukeonweb.net";
document.write(Replace(stringa, "lukeonweb", "ducatidreams"));

La stringa lukeonweb.net diventerà ducatidreams.net.

Conversione della funzione Split()

Anche in questo caso, la funzione Split() di VBScript è più comoda
del metodo split() dell'oggetto String di Javascript. Di seguito
il codice per la conversione, da aggiungere alla libreria:

function Split(StringToSplit, CharToSplit) {
return StringToSplit.split(CharToSplit);
}

Per accedere alla funzione Split() di Javascript utilizzeremo, dunque,
il codice che segue:

var stringa = Split("Luca Ruggiero", " "); document.write(stringa[0]);

Avendo splittato la stringa per un carattere di spazio vuoto
(" "), avremo come risultato Luca, mentre richiamando stringa[1]
avremo Ruggiero.

Conversione della funzione Left()

La funzione Left del VBScript funziona come il metodo substr()
dell'oggetto String del Javascript. Ecco il codice di conversione:

function Left(StringToLeft, EndOfCount) {
return StringToLeft.substr(0, EndOfCount);
}

Per accedere alla nuova funzione Left() di Javascript si può
utilizzare un codice del genere:

document.write(Left("lukeonweb.net", 4));

che restituirà in output la stringa luke.

Conversione delle funzioni UCase() ed LCase()

Per effettuare la conversione di una stringa in maiuscolo e
in minuscolo, Javascript utilizza rispettivamente i metodi toUpperCase()
e toLowerCase() dell'oggetto String che non si differenziano affatto
dalle funzioni UCase ed LCase del VBScript. Aggiungiamo quindi
alla nostra libreria le righe di codice che seguono:

function UCase(StringToUpperCase) {
return StringToUpperCase.toUpperCase();
}

function LCase(StringToLowerCase) {
return StringToLowerCase.toLowerCase();
}

Per accedere a queste funzioni è possibile utilizzare il seguente
codice di esempio:

var stringa = "Luca Ruggiero"; document.write(UCase(stringa)
+ "<br>" + LCase(stringa));

Il risultato sarà:

LUCA RUGGIERO
luca ruggiero

Conversione della funzione Trim()

Ultima dell'elenco, ma prima per difficoltà di conversione,
è la funzione Trim() che non ha equivalenti in Javascript. Quindi se le
funzioni esaminate fino a questo momento possono sembrare a qualcuno di poca
utilità, di certo una funzione Trim() per Javascript merita un'attenzione particolare! Di seguito il codice
completo della funzione (corredato da opportuni commenti) da aggiungere
alla libreria:

function Trim(StringToTrim) {
// CONTROLLA CHE IL VALORE IN INPUT SIA DI TIPO STRING
if (typeof(StringToTrim) != "string") { return StringToTrim; }
// CATTURA IL PRIMO CARATTERE DELLA STRINGA PER CONTROLLARE CHE NON SIA UNO SPAZIO
VUOTO
var StringBlank = StringToTrim.substring(0, 1);
// ELIMINA LO SPAZIO VUOTO DALLA PRIMA POSIZIONE DELLA STRINGA
while (StringBlank == " ") {
StringToTrim = StringToTrim.substring(1, StringToTrim.length);
StringBlank = StringToTrim.substring(0, 1);
}
// CATTURA L'ULTIMO CARATTERE DELLA STRINGA PER CONTROLLARE CHE NON SIA UNO SPAZIO
VUOTO
StringBlank = StringToTrim.substring(StringToTrim.length - 1, StringToTrim.length);
// ELIMINA LO SPAZIO VUOTO DALL'ULTIMA POSIZIONE DELLA STRINGA
while (StringBlank == " ") {
StringToTrim = StringToTrim.substring(0, StringToTrim.length-1);
StringBlank = StringToTrim.substring(StringToTrim.length-1, StringToTrim.length);

}
// ELIMINA POTENZIALI SPAZI VUOTI MULTIPLI ALL'INIZIO ED ALLA FINE DI UNA
STRINGA
while (StringToTrim.indexOf(" ") != -1) {
StringToTrim = StringToTrim.substring(0, StringToTrim.indexOf(" "));
StringToTrim += StringToTrim.substring(StringToTrim.indexOf(" ") + 1, StringToTrim.length);
}
// RESTITUISCE IL VALORE FINALE SENZA SPAZI VUOTI DI CONTORNO
return StringToTrim;
}

Per accedere alla funzione è sufficiente utilizzare il codice
che segue:

document.write(Trim(" lukeonweb.net "));

Il codice completo della libreria

Per chi non avesse passo dopo passo creato la libreria utilizzando i codici
presentati nell'articolo, ecco a disposizione la libreria
in formato zip.

Ti consigliamo anche