Τι είναι η μετατροπή πεζών/κεφαλαίων κειμένου;
Η μετατροπή πεζών/κεφαλαίων κειμένου λαμβάνει μια συμβολοσειρά εισόδου και εκπέμπει τις ίδιες λέξεις σε διαφορετική σύμβαση κεφαλαίων. Οι πιο συνηθισμένοι στόχοι είναι camelCase και PascalCase (χρησιμοποιούνται για αναγνωριστικά σε γλώσσες με άγκιστρα), snake_case και CONSTANT_CASE (Python, Ruby, Rust, μακροεντολές C), kebab-case (URLs, ονόματα κλάσεων CSS, χαρακτηριστικά HTML, ονόματα πακέτων npm), dot.case (κλειδιά διαμόρφωσης, διαδρομές αντικειμένων JavaScript), path/case (αναγνωριστικά τύπου συστήματος αρχείων), Title Case και Sentence case (τίτλοι και πεζός λόγος), συν πλήρη lower case και UPPER CASE. Αυτός ο μετατροπέας ανιχνεύει τα φυσικά όρια λέξεων στην είσοδό σας — λευκό διάστημα, παύλες, κάτω παύλες, τελείες, καθέτους και τις μεταβάσεις πεζών→κεφαλαίων που σηματοδοτούν αναγνωριστικά τύπου helloWorld — και τα επανασυναρμολογεί με το διαχωριστικό και το μοτίβο κεφαλαιοποίησης που απαιτεί κάθε στόχος.
Πώς λειτουργεί η μετατροπή κεφαλαίων;
Η είσοδός σας επεξεργάζεται εξ ολοκλήρου στο πρόγραμμα περιήγησής σας χρησιμοποιώντας έναν μικρό tokenizer vanilla-JavaScript και έντεκα μορφοποιητές κεφαλαίων. Τα βήματα υψηλού επιπέδου είναι:
- Η είσοδός σας διαβάζεται αυτολεξεί από το πεδίο κειμένου — κάθε byte που επικολλήσατε παραμένει στη μνήμη τοπικά.
- Ένας tokenizer χωρίζει την είσοδο σε λευκό διάστημα, κάτω παύλες, παύλες, τελείες και καθέτους, στη συνέχεια χωρίζει περαιτέρω κάθε κομμάτι σε όρια πεζών→κεφαλαίων (έτσι το
helloWorldγίνεται["hello", "World"]) και σε όρια γράμματος↔ψηφίου (έτσι τοv2APIγίνεται["v", "2", "API"]). - Τα κενά διακριτικά φιλτράρονται και τα επιζώντα διακριτικά γίνονται πεζά χρησιμοποιώντας
String.prototype.toLocaleLowerCaseώστε τα γράμματα Unicode στα Τουρκικά, Γερμανικά και άλλες τοπικές ρυθμίσεις να διατηρούνται σωστά. - Έντεκα μορφοποιητές στη συνέχεια συναρμολογούν τα διακριτικά σε κάθε μορφή κεφαλαίων με τη σειρά — camelCase, PascalCase, snake_case, CONSTANT_CASE, kebab-case, dot.case, path/case, Title Case (με μια λίστα μικρών λέξεων ώστε
and,the,ofκ.λπ. να παραμένουν πεζά εκτός από πρώτη ή τελευταία λέξη), Sentence case, πλήρη lower case και πλήρη UPPER CASE. - Η έξοδος γράφεται σε μία γραμμή ανά μορφή στο πλέγμα αποτελεσμάτων· κάθε γραμμή έχει το δικό της κουμπί αντιγραφής που χρησιμοποιεί το ασύγχρονο API Clipboard με ένα σύγχρονο εφεδρικό
document.execCommand('copy')για παλαιότερα προγράμματα περιήγησης.
Γιατί να χρησιμοποιήσετε έναν μετατροπέα κεφαλαίων;
- Ανακατασκευή αναγνωριστικών: μετονομάστε μια μεταβλητή JavaScript από
user_idσεuserId, μια συνάρτηση Python απόhelloWorldσεhello_worldή μια σταθερά Rust απόmaxBufferσεMAX_BUFFERχωρίς χειροκίνητη επεξεργασία χαρακτήρα προς χαρακτήρα. - Μετατροπή κλειδιών διαμόρφωσης: αναποδογυρίστε ένα JSON config γεμάτο κλειδιά camelCase σε snake_case YAML για μια υπηρεσία Python ή σε kebab-case για ένα Helm chart, σε μία μόνο επικόλληση.
- Γράψτε τίτλους: επικολλήστε έναν προσχέδιο τίτλου και διαβάστε τη μορφή Title Case (με τις εξαιρέσεις μικρών λέξεων του Chicago Manual of Style) δίπλα στη μορφή Sentence case (AP Stylebook) — επιλέξτε όποια χρησιμοποιεί η δημοσίευσή σας.
- Δημιουργήστε slugs URL: επικολλήστε έναν τίτλο άρθρου ιστολογίου και αντιγράψτε τη μορφή kebab-case κατευθείαν στο πεδίο slug του CMS σας — ο tokenizer χειρίζεται σημεία στίξης και φράσεις πολλών λέξεων χωρίς να αφήνει ορφανά διαχωριστικά.
Ποιες είναι οι συνήθεις εφαρμογές της μετατροπής κεφαλαίων;
Η εναλλαγή μεταξύ συμβάσεων κεφαλαίων εμφανίζεται στη μηχανική λογισμικού, τη συγγραφή περιεχομένου και τη μηχανική δεδομένων:
- Ανακατασκευή κώδικα: μετονομάστε αναγνωριστικά σε ένα αποθετήριο όταν αλλάζει ένας οδηγός στυλ (π.χ. JavaScript camelCase → Python snake_case κατά τη διάρκεια μιας επανεγγραφής backend) χωρίς να εισαγάγετε τυπογραφικά λάθη.
- Αναμόρφωση ωφέλιμου φορτίου API: μετατρέψτε κλειδιά JSON camelCase σε snake_case πριν τα τροφοδοτήσετε σε ένα backend Ruby on Rails ή Django ή σε kebab-case για ένα όνομα κλάσης CSS-in-JS.
- Συγγραφή τίτλων και slugs: παράγετε τίτλους σελίδων Title Case, μετα-περιγραφές Sentence case και slugs URL kebab-case από τον ίδιο τίτλο πηγής σε ένα βήμα.
Πώς μοιάζει ένα παράδειγμα μετατροπής κεφαλαίων;
Επικολλήστε Hello World API στην είσοδο. Το πλέγμα αποτελεσμάτων εμφανίζει έντεκα γραμμές ταυτόχρονα: helloWorldApi (camelCase), HelloWorldApi (PascalCase), hello_world_api (snake_case), HELLO_WORLD_API (CONSTANT_CASE), hello-world-api (kebab-case), hello.world.api (dot.case), hello/world/api (path/case), Hello World Api (Title Case), Hello world api (Sentence case), hello world api (lower case) και HELLO WORLD API (UPPER CASE). Η ίδια είσοδος επικολλημένη ως helloWorldAPI μετατρέπεται στις ίδιες τρεις λέξεις — ο ανιχνευτής ορίου πεζών→κεφαλαίων χειρίζεται και αυτή τη μορφή.
Αυτό τρέχει στο πρόγραμμα περιήγησής μου;
Ναι. Ο tokenizer και οι έντεκα μορφοποιητές είναι περίπου 120 γραμμές vanilla JavaScript που τρέχουν μέσα στην καρτέλα του προγράμματος περιήγησης. Τίποτα δεν μεταφορτώνεται, κανένας service worker δεν διαμεσολαβεί την είσοδό σας και η σελίδα κάνει μηδενικά αιτήματα δικτύου για το ίδιο το βήμα μετατροπής. Η μόνη εξερχόμενη κίνηση είναι τα τυπικά στοιχεία φόρτωσης σελίδας (CSS, γραμματοσειρές, αναλυτικά) — το κείμενό σας δεν φτάνει ποτέ στην Ultim8Soft.
Ποια μορφή κεφαλαίων πρέπει να χρησιμοποιώ για ονόματα μεταβλητών;
Εξαρτάται από τη γλώσσα και τον οδηγό στυλ της ομάδας. Τα αποθετήρια JavaScript και TypeScript χρησιμοποιούν συντριπτικά camelCase για μεταβλητές και συναρτήσεις, PascalCase για κλάσεις και στοιχεία React και CONSTANT_CASE για ονόματα μεταβλητών περιβάλλοντος και σταθερές επιπέδου μονάδας — ο οδηγός στυλ JavaScript της Google και ο οδηγός στυλ της Airbnb καθηλώνουν και οι δύο αυτές επιλογές. Η Python (PEP 8), η Ruby και η Rust προτιμούν snake_case για μεταβλητές και συναρτήσεις, PascalCase για κλάσεις και CONSTANT_CASE για σταθερές επιπέδου μονάδας. Τα αποθετήρια C και C++ (πυρήνας Linux, LLVM) βασίζονται σε snake_case για συναρτήσεις και CONSTANT_CASE για μακροεντολές προεπεξεργαστή. Σε περίπτωση αμφιβολίας, τρέξτε τον linter ή τον μορφοποιητή της ομάδας σας — θα σας πει ποια σύμβαση επιβάλλεται.
Πώς γίνεται tokenize η είσοδος;
Ο tokenizer πρώτα χωρίζει την είσοδο σε οποιαδήποτε ακολουθία λευκού διαστήματος, κάτω παύλας (_), παύλας (-), τελείας (.) ή καθέτου (/). Κάθε προκύπτον κομμάτι χωρίζεται στη συνέχεια ξανά σε όρια πεζών→κεφαλαίων (έτσι helloWorld γίνεται ["hello", "World"]) και σε όρια γράμματος↔ψηφίου (έτσι v2API γίνεται ["v", "2", "API"]). Τα κενά διακριτικά φιλτράρονται και τα επιζώντα διακριτικά γίνονται πεζά μέσω String.prototype.toLocaleLowerCase. Οι μορφοποιητές στη συνέχεια ανα-κεφαλαιοποιούν και ανα-συνενώνουν τα διακριτικά με το διαχωριστικό που απαιτεί κάθε μορφή κεφαλαίων. Η στρατηγική χειρίζεται και τις έξι κοινές μορφές αναγνωριστικών — camelCase, PascalCase, snake_case, kebab-case, CONSTANT_CASE και πεζό λόγο διαχωρισμένο με κενά — αμέσως.
Τι γίνεται με τους χαρακτήρες Unicode / μη-ASCII;
Τα γράμματα Unicode επιβιώνουν της διαδρομής. Ο tokenizer χρησιμοποιεί String.prototype.toLocaleLowerCase και toLocaleUpperCase, οι οποίες σέβονται τους κανόνες πεζογραφίας ειδικούς για την τοπική ρύθμιση — τουρκικό με τελεία vs χωρίς τελεία i, γερμανικό ß που γίνεται κεφαλαίο σε SS, τονισμένα λατινικά γράμματα στα Γαλλικά και Ισπανικά κ.ο.κ. Οι μη-γράμματοι χαρακτήρες που ΔΕΝ είναι στο σύνολο διαχωριστικών (λευκό διάστημα, _, -, ., /) — για παράδειγμα ψηφία, τονισμένα γράμματα ή χαρακτήρες CJK — διατηρούνται μέσα στο διακριτικό στο οποίο εμφανίζονται και οι μορφοποιητές τους ανα-εκπέμπουν αυτολεξεί. Αυτό σημαίνει ότι μια είσοδος όπως nœud_principal γίνεται tokenize σε ["nœud", "principal"] και μετατρέπεται καθαρά σε nœudPrincipal (camelCase) ή NœudPrincipal (PascalCase).
Αυτός ο μετατροπέας κεφαλαίων είναι μια ενιαία στατική σελίδα που τρέχει τον tokenizer και τους έντεκα μορφοποιητές εξ ολοκλήρου στο πρόγραμμα περιήγησής σας — χωρίς βιβλιοθήκη προμηθευτή, χωρίς κλήση δικτύου ανά μετατροπή, χωρίς λογαριασμό. Επικολλήστε οποιοδήποτε κείμενο παραπάνω, σαρώστε τις έντεκα εξόδους κεφαλαίων δίπλα-δίπλα και αντιγράψτε αυτήν που χρειάζεστε.