lcfirst#
Επιστρέφει αντίγραφο συμβολοσειράς με τον πρώτο χαρακτήρα της μετατραμμένο σε πεζό.
Η lcfirst αγγίζει μόνο τον πρώτο χαρακτήρα· το υπόλοιπο της συμβολοσειράς αντιγράφεται αυτούσιο. Η είσοδος δεν τροποποιείται - η lcfirst επιστρέφει νέα συμβολοσειρά. Είναι η εσωτερική συνάρτηση που υλοποιεί την ακολουθία διαφυγής \l σε συμβολοσειρές με διπλά εισαγωγικά, οπότε η "\l$name" και η lcfirst($name) παράγουν το ίδιο αποτέλεσμα.
Αν παραλειφθεί η EXPR, η lcfirst λειτουργεί στην $_.
Σύνοψη#
lcfirst EXPR
lcfirst
Τι επιστρέφεται#
Μια νέα συμβολοσειρά ίση με την EXPR με τον πρώτο χαρακτήρα της αντικατεστημένο από την πεζή μορφή που παράγουν οι κανόνες case-folding του χαρακτήρα. Το υπόλοιπο της συμβολοσειράς παραμένει ανέπαφο. Αν η EXPR είναι η κενή συμβολοσειρά, επιστρέφεται η κενή συμβολοσειρά. Αν η EXPR είναι undef, το αποτέλεσμα είναι η κενή συμβολοσειρά και εκπέμπεται προειδοποίηση uninitialized υπό use warnings.
Η lcfirst δεν μεταλλάσσει ποτέ το όρισμά της. Για να μετατρέψετε επιτόπια τον πρώτο χαρακτήρα σε πεζό, αναθέστε το αποτέλεσμα πίσω:
$name = lcfirst $name;
Για την παραλλαγή όλων-των-χαρακτήρων, βλ. lc.
Καθολική κατάσταση που επηρεάζει#
$_- διαβάζεται όταν ηEXPRπαραλείπεται.locale
LC_CTYPE- συμβουλεύεται όταν είναι ενεργή ηuse locale(βλ. Pragmas και κανόνες πεζών-κεφαλαίων παρακάτω).
Pragmas και κανόνες πεζών-κεφαλαίων#
Η lcfirst συμπεριφέρεται με τον ίδιο τρόπο υπό διάφορες pragmas όπως η lc. Το ενεργό σύνολο κανόνων για τον πρώτο χαρακτήρα εξαρτάται από το ποιες pragmas είναι σε εμβέλεια στο σημείο κλήσης:
use bytes- μόνο κανόνες ASCII. Μόνο τα bytesA-Zμετατρέπονται σεa-z· κάθε άλλο byte επιστρέφεται αμετάβλητο.use locale(γιαLC_CTYPE) - το τρέχον locale αποφασίζει τη μετατροπή για σημεία κώδικα κάτω του 256. Τα σημεία κώδικα 256 και άνω μετατρέπονται με κανόνες Unicode όταν η συμβολοσειρά έχει ορισμένη τη σημαία UTF-8. Ένα UTF-8 locale ενεργοποιεί πλήρεις κανόνες Unicode από την Perl 5.20 και μετά.Συμβολοσειρά με σημαία UTF-8 - εφαρμόζονται κανόνες case-folding Unicode.
use feature 'unicode_strings'oruse locale ':not_characters'Unicode rules apply regardless of the UTF-8 flag.
Διαφορετικά - κανόνες ASCII. Χαρακτήρες εκτός ASCII επιστρέφονται αμετάβλητοι.
Αυτό σημαίνει ότι η ίδια lcfirst("É...") μπορεί να επιστρέψει "é..." υπό use utf8 ή use feature 'unicode_strings', και "É..." (αμετάβλητη) υπό τις προεπιλογές καθαρού ASCII. Όταν έχει σημασία η φορητότητα μεταξύ pragmas, δηλώστε ρητά το σύνολο κανόνων:
use feature 'unicode_strings';
my $s = lcfirst $input; # Unicode rules regardless of UTF-8 flag
Παραδείγματα#
Βασική κλήση, μετατροπή του πρώτου γράμματος μιας λέξης σε πεζό:
my $s = lcfirst "Hello, World"; # "hello, World"
Κανονικοποίηση title-case για μια λίστα ονομάτων, όπου ο καλών θέλει το πρώτο γράμμα σε πεζό για ένα URL slug:
my @slugs = map { lcfirst } @CamelCaseNames;
Η μορφή προεπιλεγμένου ορίσματος διαβάζει από την $_:
for ("Apple", "Banana", "Cherry") {
print lcfirst, "\n"; # "apple", "banana", "cherry"
}
Αλλάζει μόνο ο πρώτος χαρακτήρας - τα μεταγενέστερα κεφαλαία διατηρούνται. Αυτό έχει σημασία για αναγνωριστικά camelCase που προέρχονται από PascalCase:
my $method = lcfirst "GetUserName"; # "getUserName"
Οι κανόνες Unicode πρέπει να ζητηθούν ρητά, είτε μέσω συμβολοσειράς εισόδου με σημαία UTF-8 είτε μέσω του χαρακτηριστικού unicode_strings:
use feature 'unicode_strings';
my $s = lcfirst "Éclair"; # "éclair"
my $s = lcfirst "Éclair"; # without unicode_strings and no
# UTF-8 flag: "Éclair" unchanged
Η ακολουθία διαφυγής \l σε συμβολοσειρά με διπλά εισαγωγικά είναι ακριβώς lcfirst στον επόμενο χαρακτήρα:
my $name = "Perl";
print "\l$name\n"; # "perl\n"
Οριακές περιπτώσεις#
Κενή συμβολοσειρά: η
lcfirst("")επιστρέφει"". Καμία προειδοποίηση.Είσοδος
undef: ηlcfirst(undef)επιστρέφει"". Εκπέμπει προειδοποίησηuninitializedυπόuse warnings.Πρώτος χαρακτήρας ήδη πεζός: επιστρέφεται αμετάβλητος· καμία ειδική περίπτωση, καμία συντόμευση που πρέπει να γνωρίζει ο χρήστης.
Ο πρώτος χαρακτήρας δεν έχει αντιστοίχιση σε πεζά (ψηφίο, σημείο στίξης, σύμβολο, οι περισσότεροι CJK): επιστρέφεται αμετάβλητος.
Case folds πολλαπλών σημείων κώδικα: ορισμένοι χαρακτήρες Unicode μετατρέπονται σε πεζά σε περισσότερα από ένα σημεία κώδικα (π.χ. τα τουρκικά ζεύγη dotted/dotless I σε locale-tailored folds). Η
lcfirstακολουθεί την απλή αντιστοίχιση σε πεζά του Unicode, που είναι πάντα μονού-σημείου-κώδικα - δεν εκτελεί πλήρες case folding. Χρησιμοποιήστε τηνlcσε συνδυασμό με κανονικοποίηση, ή ρητόUnicode::CaseFold, όταν έχει σημασία η σημασιολογία πλήρους fold.Εκπλήξεις locale γύρω από το 255/256: υπό
use localeμε μη-UTF-8 locale, ένας πρώτος χαρακτήρας του οποίου η μετατροπή σε πεζό θα διέσχιζε το όριο 255/256 επιστρέφεται αμετάβλητος, και από την Perl 5.22 και μετά εκπέμπεται προειδοποίησηlocale.Δεν είναι list-aware: η
lcfirstείναι βαθμωτός τελεστής. Ηlcfirst @listπαίρνει τοscalar(@list)- το πλήθος στοιχείων - και μετατρέπει σε πεζό τον πρώτο χαρακτήρα του, σχεδόν ποτέ αυτό που ήθελε ο καλών. Χρησιμοποιήστεmap { lcfirst } @listγια μετατροπή σε πεζά ανά στοιχείο.
Διαφορές από το upstream#
Πλήρως συμβατό με το upstream Perl 5.42.
Δείτε επίσης#
lc- μετατρέπει κάθε χαρακτήρα σε πεζό, όχι μόνο τον πρώτο· ίδιοι κανόνες ευαισθησίας σε pragmaucfirst- μετατρέπει τον πρώτο χαρακτήρα σε κεφαλαίο· η ακριβώς αντίστροφη λειτουργίαuc- μετατρέπει κάθε χαρακτήρα σε κεφαλαίοfc- Unicode case-folding κατάλληλο για σύγκριση χωρίς διάκριση πεζών-κεφαλαίων, όχι για εμφάνιση$_- προεπιλεγμένο όρισμα όταν ηEXPRπαραλείπεται