Στη JavaScript, οι συμβολοσειρές (strings) χρησιμοποιούνται για να αναπαραστήσουν κείμενο και αλφαριθμητικά δεδομένα. Μια συμβολοσειρά είναι μια ακολουθία χαρακτήρων που περικλείεται με εισαγωγικά, είτε με μονά (‘) είτε με διπλά (“).
Παραδείγματα συμβολοσειρών στη JavaScript:
var message = "Αυτή είναι μια συμβολοσειρά."; var name = 'Ονοματεπώνυμο';
Μπορείτε να χρησιμοποιήσετε είτε μονά εισαγωγικά είτε διπλά εισαγωγικά για τον καθορισμό μιας συμβολοσειράς, αρκεί να είναι συνεπής στη χρήση τους. Για παράδειγμα, αν χρησιμοποιήσετε μονά εισαγωγικά για να ξεκινήσετε μια συμβολοσειρά, πρέπει να την κλείσετε με μονά εισαγωγικά, και αν χρησιμοποιήσετε διπλά εισαγωγικά, πρέπει να την κλείσετε με διπλά εισαγωγικά.
Παράδειγμα με συμβολοσειρές που περιέχουν εισαγωγικά:
var message1 = "Αυτή η συμβολοσειρά περιέχει μονά εισαγωγικά ('')."; var message2 = 'Αυτή η συμβολοσειρά περιέχει διπλά εισαγωγικά ("").';
Με τη χρήση των συμβολοσειρών, μπορείτε να εκτελέσετε πολλές λειτουργίες, όπως συνένωση (concatenation) συμβολοσειρών, αναζήτηση (searching) σε μια συμβολοσειρά, απόκοψη (substring) μιας συμβολοσειράς, μετατροπή σε πεζά ή κεφαλαία γράμματα, και πολλά άλλα.
Επειδή οι συμβολοσειρές πρέπει να γράφονται μέσα σε εισαγωγικά, η JavaScript μπορεί να παρερμηνεύσει λανθασμένα μια συμβολοσειρά που περιέχει χαρακτήρες που έχουν ειδική σημασία στη γλώσσα. Για να αποφευχθεί αυτό, μπορείτε να χρησιμοποιήσετε τον χαρακτήρα απόδρασης (escape character) πριν από τους ειδικούς χαρακτήρες, ώστε να τους αντιμετωπίζει ως κανονικούς χαρακτήρες στη συμβολοσειρά.
Ο χαρακτήρας απόδρασης στη JavaScript είναι ο χαρακτήρας \
. Όταν τοποθετηθεί μπροστά από έναν ειδικό χαρακτήρα, αυτός ο ειδικός χαρακτήρας θα αντιμετωπιστεί ως απλός χαρακτήρας και όχι ως μέρος της σύνταξης της συμβολοσειράς.
Παραδείγματα:
var message1 = 'Αυτή η συμβολοσειρά περιέχει εισαγωγικά (\') μέσα.'; var message2 = "Αυτή η συμβολοσειρά περιέχει εισαγωγικά (\") μέσα."; var message3 = "Αυτή η συμβολοσειρά περιέχει οπίσθιο κάθετο (\\) μέσα."; console.log(message1); // Εμφανίζει: Αυτή η συμβολοσειρά περιέχει εισαγωγικά (') μέσα. console.log(message2); // Εμφανίζει: Αυτή η συμβολοσειρά περιέχει εισαγωγικά (") μέσα. console.log(message3); // Εμφανίζει: Αυτή η συμβολοσειρά περιέχει οπίσθιο κάθετο (\) μέσα.
Στα παραπάνω παραδείγματα, χρησιμοποιείται ο χαρακτήρας απόδρασης για να δηλωθούν εισαγωγικά και οπίσθιο κάθετο ως απλοί χαρακτήρες μέσα στις συμβολοσειρές. Αυτό επιτρέπει την ορθή ερμηνεία των ειδικών χαρακτήρων από τη JavaScript.
[adinserter block=”2″]
Στη JavaScript, υπάρχουν έξι ακόμη αποδοχές ακολουθιών απόδρασης (escape sequences) που είναι έγκυρες και χρησιμοποιούνται για να αναπαραστήσουν ειδικούς χαρακτήρες σε συμβολοσειρές. Οι ακολουθίες αυτές είναι:
\\
: Οπίσθιο κάθετο (backslash)\n
: Νέα γραμμή (line feed)\r
: Επιστροφή καρέτας (carriage return)\t
: Οριζόντια καρέτας (tab)\'
: Μονό εισαγωγικό (single quote)\"
: Διπλό εισαγωγικό (double quote)
Αυτές οι ακολουθίες απόδρασης χρησιμοποιούνται για να αναπαραστήσουν ειδικούς χαρακτήρες που δεν μπορούν να εκφραστούν κανονικά σε μια συμβολοσειρά. Για παράδειγμα, η ακολουθία \n
χρησιμοποιείται για να προσθέσει μια νέα γραμμή στο κείμενο, ενώ η ακολουθία \"
χρησιμοποιείται για να εισαγάγει ένα διπλό εισαγωγικό ως απλό χαρακτήρα μέσα σε μια συμβολοσειρά που περικλείεται με διπλά εισαγωγικά.
Παράδειγμα:
var message = "Αυτή είναι μια συμβολοσειρά με ακολουθίες απόδρασης:\nΝέα γραμμή,\tοριζόντια καρέτας,\rεπιστροφή καρέτας,\nμονό εισαγωγικό (\'\'\'\'\'\'),\nκαι διπλό εισαγωγικό (\\"\\"\\"\\"\\"\")."; console.log(message);
Το παραπάνω παράδειγμα δημιουργεί μια συμβολοσειρά που περιέχει ακολουθίες απόδρασης για νέες γραμμές, οριζόντιες καρέτες, επιστροφές καρέτας, μονά εισαγωγικά και διπλά εισαγωγικά. Οι ειδικοί χαρακτήρες αναπαρίστανται σωστά και εμφανίζονται στην έξοδο.
Εκτός από τον αποδραστικό χαρακτήρα \
που αναφέρθηκε προηγουμένως, υπάρχουν και άλλες έξι αποδραστικές ακολουθίες που είναι έγκυρες στη JavaScript. Αυτές οι ακολουθίες χρησιμοποιούνται για την αναπαράσταση ειδικών χαρακτήρων μέσα σε μια συμβολοσειρά. Οι έξι αποδραστικές ακολουθίες είναι οι εξής:
\'
: Αναπαριστά τον μονό εισαγωγικό χαρακτήρα (‘)\"
: Αναπαριστά τον διπλό εισαγωγικό χαρακτήρα (“)\\
: Αναπαριστά τον Backslash χαρακτήρα (\)\n
: Αναπαριστά έναν χαρακτήρα νέας γραμμής (line feed)\r
: Αναπαριστά έναν χαρακτήρα επιστροφής (carriage return)\t
: Αναπαριστά έναν χαρακτήρα tab
Μπορείτε να χρησιμοποιήσετε αυτές τις αποδραστικές ακολουθίες για να εισάγετε αυτούς τους ειδικούς χαρακτήρες σε μια συμβολοσειρά, όπως παρακάτω:
var message = 'Αυτή είναι μια συμβολοσειρά με αποδραστικές ακολουθίες:\nΈνας χαρακτήρας νέας γραμμής και ένας χαρακτήρας tab: \t\nΈνας χαρακτήρας μονού εισαγωγικού: \' και ένας χαρακτήρας διπλού εισαγωγικού: \"'; console.log(message);
Το παραπάνω παράδειγμα εμφανίζει μια συμβολοσειρά που περιέχει τις αποδραστικές ακολουθίες για έναν χαρακτήρα νέας γραμμής, έναν χαρακτήρα tab, έναν χαρακτήρα μονού εισαγωγικού και έναν χαρακτήρα διπλού εισαγωγικού. Όταν εκτελείται ο κώδικας, η συμβολοσειρά εμφανίζεται με τη σωστή ερμηνεία των ειδικών χαρακτήρων.
Για καλύτερη αναγνωσιμότητα, οι προγραμματιστές συνήθως προτιμούν να αποφεύγουν γραμμές κώδικα μεγαλύτερες από 80 χαρακτήρες.
Αν μια δήλωση στη JavaScript δεν χωράει σε μία γραμμή, η καλύτερη θέση για να την κατακόψετε είναι μετά από έναν τελεστή. Αυτό βοηθάει στην ευανάγνωστη διαχωρισμό του κώδικα σε πολλαπλές γραμμές, και παρέχει καλύτερη οπτική αναγνωσιμότητα.
Παράδειγμα:
var result = value1 + value2 + value3 + value4 + value5 + value6;
Στο παραπάνω παράδειγμα, η δήλωση αντικείμενου result
χωρίζεται σε πολλαπλές γραμμές για να χωρέσει τη συνολική έκφραση. Η διαχωρισμένη γραμμή ακολουθεί μετά τον τελεστή +
, προσφέροντας μια καθαρή και οργανωμένη αναγνωσιμότητα του κώδικα.
Είναι σημαντικό να παρατηρήσετε ότι η διαχωρισμένη γραμμή δεν απαιτεί χρήση τελεστή συνένωσης +
. Αυτό συμβαίνει αυτόματα επειδή η γραμμή συνεχίζει μετά του τελεστή +
της προηγούμενης γραμμής.
[adinserter block=”3″]
Φυσικά! Ας υποθέσουμε ότι έχουμε την ακόλουθη δήλωση που δεν χωράει σε μία γραμμή:
var result = value1 + value2 + value3 + value4 + value5 + value6;
Για να την κατακόψουμε σε περισσότερες γραμμές, μπορούμε να τοποθετήσουμε τον τελεστή +
στο τέλος της πρώτης γραμμής:
var result = value1 + value2 + value3 + value4 + value5 + value6;
Αυτό κατακερματίζει την έκφραση σε πολλές γραμμές μετά από τον τελεστή +
. Κάθε γραμμή περιέχει μία από τις μεταβλητές value1
, value2
, κ.λπ. Η τελευταία γραμμή δεν έχει τελεστή +
μετά την τελευταία μεταβλητή.
Αυτό το παράδειγμα δείχνει πώς μπορούμε να κατακερματίσουμε μία μακρά δήλωση σε πολλές γραμμές για να βελτιώσουμε την αναγνωσιμότητα του κώδικα. Οι πολλαπλές γραμμές διευκολύνουν την κατανόηση του κώδικα και μειώνουν την πιθανότητα λαθών κατά την ανάπτυξη και συντήρηση του προγράμματος.
Μπορείτε επίσης να διακόψετε μία γραμμή κώδικα μέσα σε μια συμβολοσειρά χρησιμοποιώντας έναν μόνο αντίστροφο κάθετο χαρακτήρα (\) πριν από την αλλαγή γραμμής. Αυτό επιτρέπει τη διατήρηση της συνοχής της συμβολοσειράς ακόμη και αν απαιτείται να την διακόψετε σε πολλαπλές γραμμές.
Παράδειγμα:
var message = "Αυτή είναι μια πολύ μακρά συμβολοσειρά που χωράει σε πολλές γραμμές \ για να διατηρηθεί η αναγνωσιμότητα και η συνοχή του κώδικα."; console.log(message);
Στο παραπάνω παράδειγμα, η συμβολοσειρά διακόπτεται μεταξύ των λέξεων “γραμμές” και “για”. Ο αντίστροφος κάθετος χαρακτήρας (\) δηλώνει τη συνέχεια της συμβολοσειράς στην επόμενη γραμμή, επιτρέποντάς σας να συνεχίσετε τη συμβολοσειρά χωρίς να προκαλείται λάθος σύνταξης. Η εκτύπωση της μεταβλητής message
εμφανίζει τη συμβολοσειρά στην κονσόλα, παρουσιάζοντας τη συνέχεια σε μια νέα γραμμή.
Αυτή η τεχνική μπορεί να είναι χρήσιμη όταν θέλετε να κρατήσετε μια μακρά συμβολοσειρά συνεκτική και ευανάγνωστη, ειδικά αν περιέχει πολλές λέξεις ή μακριές προτάσεις.
Στη JavaScript, οι συμβολοσειρές (strings) συνήθως θεωρούνται απλές τιμές (primitive values) και δημιουργούνται από απλούς καθορισμούς (literals). Ωστόσο, υπάρχει η δυνατότητα να χρησιμοποιήσετε τις συμβολοσειρές ως αντικείμενα (objects) με τη βοήθεια του αντικειμενικού προτύπου String.
Όταν δημιουργείτε ένα αντικείμενο String, μπορείτε να χρησιμοποιήσετε τον constructor του προτύπου String ή την απόδοση (casting) ενός απλού τύπου στον τύπο String. Αυτό σας επιτρέπει να εκτελέσετε λειτουργίες και μεθόδους στις συμβολοσειρές, καθώς οι αντικειμενικές μορφές παρέχουν πρόσθετες λειτουργίες.
Παραδείγματα:
// Χρήση του constructor του προτύπου String var strObject1 = new String("Hello"); console.log(strObject1.length); // Εμφανίζει: 5 console.log(strObject1.toUpperCase()); // Εμφανίζει: "HELLO" // Απόδοση απλού τύπου σε αντικείμενο String var strObject2 = String("World"); console.log(strObject2.length); // Εμφανίζει: 5 console.log(strObject2.toLowerCase()); // Εμφανίζει: "world"
Στα παραπάνω παραδείγματα, δημιουργούνται δύο αντικείμενα String (strObject1
και strObject2
) με τη χρήση του constructor του προτύπου String και την απόδοση των απλών τιμών στον τύπο String αντίστοιχα. Τα αντικείμενα String παρέχουν πρόσθετες ιδιότητες και μεθόδους όπως το length
για τον υπολογισμό του μήκους και το toUpperCase()
για τη μετατροπή των χαρακτήρων σε κεφαλαία γράμματα.
[adinserter block=”4″]
Σημειώστε ότι, παρόλο που μπορείτε να χρησιμοποιήσετε αντικείμενα String για να εκτελέσετε λειτουργίες στις συμβολοσειρές, η προτιμησητική προσέγγιση είναι να χρησιμοποιείτε τις απλές τιμές των συμβολοσειρών καθώς αυτές είναι πιο αποδοτικές σε θέματα αποθήκευσης και επεξεργασίας. Τα αντικείμενα String είναι πιο κατάλληλα όταν χρειάζεστε επιπλέον λειτουργίες για τις συμβολοσειρές.
Εδώ είναι μερικά ακόμα παραδείγματα χρήσης των αντικειμένων String:
// Χρήση της concat() μεθόδου για τη συνένωση δύο συμβολοσειρών var strObject1 = new String("Hello"); var strObject2 = new String(" World"); var concatenated = strObject1.concat(strObject2); console.log(concatenated); // Εμφανίζει: "Hello World" // Πρόσβαση σε χαρακτήρες μιας συμβολοσειράς με τη χρήση της charAt() μεθόδου var strObject3 = new String("JavaScript"); console.log(strObject3.charAt(0)); // Εμφανίζει: "J" console.log(strObject3.charAt(4)); // Εμφανίζει: "S" // Χρήση της slice() μεθόδου για την εξαγωγή μέρους μιας συμβολοσειράς var strObject4 = new String("Hello World"); var sliced = strObject4.slice(6, 11); console.log(sliced); // Εμφανίζει: "World" // Χρήση της indexOf() μεθόδου για την εύρεση της πρώτης εμφάνισης ενός υποσυμβολοσειράς var strObject5 = new String("Hello World"); var index = strObject5.indexOf("World"); console.log(index); // Εμφανίζει: 6
Στα παραπάνω παραδείγματα χρησιμοποιούνται αντικείμενα String για να εκτελέσουν διάφορες λειτουργίες. Η concat()
μέθοδος χρησιμοποιείται για να συνενώσει δύο συμβολοσειρές, η charAt()
μέθοδος χρησιμοποιείται για να πάρει τον χαρακτήρα σε συγκεκριμένη θέση, η slice()
μέθοδος χρησιμοποιείται για να εξάγει ένα μέρος μιας συμβολοσειράς και η indexOf()
μέθοδος χρησιμοποιείται για να βρει την πρώτη εμφάνιση μιας υποσυμβολοσειράς μέσα σε μια συμβολοσειρά.
Αυτά τα παραδείγματα δείχνουν την ευελιξία που παρέχουν τα αντικείμενα String στην επεξεργασία και την επιλογή διάφορων λειτουργιών που μπορούν να εκτελέσουν σε συμβολοσειρές. Ωστόσο, θα πρέπει να έχετε υπόψη ότι η χρήση των απλών τιμών συμβολοσειρών είναι συνήθως προτιμότερη για τις καθημερινές ανάγκες, ενώ η χρήση αντικειμένων String είναι περισσότερο κατάλληλη όταν χρειάζεται πρόσθετη ευελιξία και λειτουργικότητα.