اذهب إلى المحتوى
  • 0

تبديل حالة حروف نص من أحرف كبيرة إلى صغيرة وبالعكس في جافاسكريبت

توفيق اسحيمة

السؤال

السلام عليكم 

لدي هادا المتغير الدي يحتوي على هاته الكلمة دات الحروف المختلطة بين حروف كبيرة وحروف صغيرة 

let swappedName = "shImA";

احاول ان اتحكم في اعادة جعل الحروف عكس ماهي عليه او بمعنى اخر الحروف الصغيرة تصبح كبيرة والحروف الكبيرة تصبح صغيرة بحيث يكون الناتج كالتالي

"SHiMa"

ودلك طبعا عن طريق for loop

كل محاولاتي بائت بالفشل فمعظم النتائج التي اتحصل عليها اما تكون الكلمة كاملة بحروف كبيرة او العكس

جزاكم الله خيرا. 

تم التعديل في بواسطة Hassan Hedr
توضيح السؤال
رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 0

يمكنك استخدام دالة toUpperCase في جافاسكريبت بحيث تكون الأسماء لديك بهذا الشكل 

const days = ['sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday'];

ثم يمكنك إنشاء for loop بهذا الشكل , ليتم تحويل جميع الكلمات إلى UpperCase عن طريق الدالة toUpperCase

for ( let i = 0; i < days.length; i++ ) {
  days[i] = days[i].toUpperCase();
  console.log(days[i]);
}

فيكون كامل الكود كالتالي 

const days = ['sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday'];
for ( let i = 0; i < days.length; i++ ) {
  days[i] = days[i].toUpperCase();
  console.log(days[i]);
}

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 11 دقائق مضت قال بلال زيادة:

يمكنك استخدام دالة toUpperCase في جافاسكريبت بحيث تكون الأسماء لديك بهذا الشكل 


const days = ['sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday'];

ثم يمكنك إنشاء for loop بهذا الشكل , ليتم تحويل جميع الكلمات إلى UpperCase عن طريق الدالة toUpperCase


for ( let i = 0; i < days.length; i++ ) {
  days[i] = days[i].toUpperCase();
  console.log(days[i]);
}

فيكون كامل الكود كالتالي 


const days = ['sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday'];
for ( let i = 0; i < days.length; i++ ) {
  days[i] = days[i].toUpperCase();
  console.log(days[i]);
}

 

شكرا لك اخي 

اعتقد انك لم تفهم المقصود فالدوال toUpperCase and toLowerCase  اعرف دورهما لكن في الحالة التي دكرت اعلاه نريد ان نغير شكل تلك الكلمة التي ضمن المتغير بحيت انها تحتوي في نفس الوقت على خليط من الاحرف الكبيرة والصغيرة 

ما نريده بالضبط هو تحويل الاحرف الكبيرة الى احرف صغيرة

وتحويل الاحرف الصغيرة الى احرف كبيرة

شكرا لك

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

الخوارزمية

يمكنك تقسيم النص الى مصفوفة حروف عبر الدالة split بتمرير محرف فارغ لها كالتالي:

"shImA".split('') // ['s', 'h', 'I', 'm', 'A']

ثم المرور على مصفوفة الحروف وتغيير حالتها عن طريق الدالة map من أحرف كبيرة إلى صغيرة وبالعكس، عبر مقارنتها بعد التحويل وإعادة الحالة المناسبة كالتالي:

"shImA".split('')
  .map(char => char.toUpperCase() === char ? char : char.toLowerCase()) // ['S', 'H', 'i', 'M', 'a']

ثم إعادة تجميع مصفوفة الحروف إلى نص مجددا عبر الدالة join بتمرير محرف فارغ لتحصل على المطلوب كالتالي:

"shImA".split('')
  .map(char => char.toUpperCase() === char ? char : char.toLowerCase())
  .join('') // SHiMa

كتابة دالة toggleCase

يمكنك كتابة ما سبق في دالة: 

function toggleCase(text) {
  return text.split('')
    .map(char => char.toUpperCase() === char ? char : char.toLowerCase())
    .join('')
}

واستخدامها داخل تطبيقك:

let swappedName = "shImA";

console.log(toggleCase(swappedName)) // SHiMa

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

يمكنك تحقيق ذلك عبر التعامل مع الأحرف من خﻻل جدول أسكي (ASCII Table) وهو جدول يُمثل كل حرف وما يُقابله من عدد عشري كان أو ثنائي أو ثماني أو سادس عشر, وتكون الخوارزمية بالشكل التالي

  1. عند قرائة جدول الأسكي ستﻻحظ الأتي: الأحرف الكبيرة تبدأ من الرقم العشري 65 وتنتهي عند الرقم 90
  2. الأحرف الصغيرة تبدأ من الرقم العشري 97 وتنتهي عند الرقم 122
  3. مما سبق نستنتج أنه يمكننا تحويل الحرف من كبير إلى صغير عبر إضافة 32 رقم 
  4. يمكننا تحويل الحرف الصغير إلى كبير عبر طرح 32 رقم

ولإيجاد قيمة شفرة الأسكي الخاصة بحرف نقوم بتنفيذ الشفرة التالية

let name="sharaf";
let asci_code=name.charCodeAt(0);
//////سيقوم بإرجاع قيمة الأسكي كود الخاصة بأول حرف 
////s=115

ولتحويل قيمة شفرة الأسكي إلى حرف نقوم بإستخدام الشفرة التالية

String.fromCharCode(115);

///يقوم بطباعة s

فيكون في النهاية الشفرة البرمجية الخاصة بك على الشكل التالي

let swappedName = "shImA";
let arr=swappedName.split('');
for (let i=0;i<arr.length;i++){
  	let char_code=arr[i].charCodeAt(0);
	arr[i]=char_code<97?String.fromCharCode(char_code+32):String.fromCharCode(char_code-32);
}
swappedName=arr.join("");
console.log(swappedName);

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

بإمكانك إستخدام الخوارزمية التالية:

  1. إنشاء دالة بالإسم swapString تستقبل معامل من النوع String و تُعيد سلسلة نصية.
  2. تعريف متغير محلي يحمل قيمة فارغة مبدئياً و ليكن swapedStr 
  3. المرور على المحارف المكونة للسلسلة النصية الأصلية عن طريق حلقة و من أجل كل محرف نقوم بِـ:
    - فحص حالة المحرف إن كان المحرف صغير نُضيف للمتغير swapedStr المحرف الحالي لكن بحالة أكبر و إلا نُضيف المحرف الحالي بحالة أصغر
  4. نُعيد قيمة المتغير swapedStr  

و هذا تطبيق الخوارزمية:

function swapString(str) {
    let swapedStr = "";
    for (let c of str) {
        if(c === c.toLowerCase()) swapedStr += c.toUpperCase();
        else swapedStr += c.toLowerCase();
    }
    return swapedStr;
}

console.log(swapString("shImA")); // SHiMa
رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...