كيف يمكنني تكبير الحرف الأول من كل كلمة في سلسلة في بيرل؟

StackOverflow https://stackoverflow.com/questions/77226

  •  09-06-2019
  •  | 
  •  

سؤال

ما هي أسهل طريقة لتكبير الحرف الأول في كل كلمة من سلسلة؟

هل كانت مفيدة؟

المحلول

يرى الأسئلة الشائعة.

لا أعتقد أن ucfirst() يرضي سؤال OP المتمثل في تكبير الحرف الأول من كل كلمة في سلسلة دون تقسيم السلسلة والانضمام إليها لاحقًا.

نصائح أخرى

كما ذكر @brian في التعليقات، فإن الإجابة المقبولة حاليًا بواسطة @piCookie خاطئة!

$_="what's the wrong answer?";
s/\b(\w)/\U$1/g
print; 

هذا سوف يطبع "ما هي الإجابة الخاطئة؟" لاحظ أن S خاطئ

كما التعليمات يقول أنك ربما تكون أفضل حالًا في الاستخدام

s/([\w']+)/\u\L$1/g

أو النص::تنسيق تلقائي

نلقي نظرة على com.ucfirst وظيفة.

$line = join " ", map {ucfirst} split " ", $line;
$capitalized = join '', map { ucfirst lc $_ } split /(\s+)/, $line;

من خلال التقاط المسافة البيضاء، يتم إدراجها في القائمة واستخدامها لإعادة بناء التباعد الأصلي.يقوم "ucfirst lc" بتحويل كلمة "teXT" إلى "نص" بأحرف كبيرة.

$string =~ s/(\w+)/\u$1/g;

يجب أن تعمل على ما يرام

يؤدي هذا إلى تكبير الكلمة الأولى فقط من كل سطر:

perl -ne "print (ucfirst($1)$2)  if s/^(\w)(.*)/\1\2/" file

لاحظ أن حل الأسئلة الشائعة لا يعمل إذا كانت لديك كلمات مكتوبة بأحرف كبيرة وتريد أن تكون بالأحرف الكبيرة (فقط) بدلاً من ذلك.يمكنك إما إنشاء تعبير عادي أكثر تعقيدًا، أو إجراء LC على السلسلة قبل تطبيق حل الأسئلة الشائعة.

يمكنك استخدام 'حالة العنوان"، إنه جزء رائع جدًا من التعليمات البرمجية مكتوب بلغة Perl.

ال com.ucfirst من المؤكد أن الوظيفة في الخريطة تفعل ذلك، ولكن بطريقة بدائية للغاية.إذا كنت تريد شيئًا أكثر تطورًا قليلاً، فقم بإلقاء نظرة عليه البرنامج النصي TitleCase لجون جروبر.

جرب هذا :

echo "what's the wrong answer?" |perl -pe 's/^/ /; s/\s(\w+)/ \u$1/g; s/^ //'

ما هي الإجابة الخاطئة؟

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top