مقدمة إلى StringBuffer
جزء من قسم Logic & Flow في رحلة Java على Coddy — الدرس 45 من 59.
StringBuffer يشبه StringBuilder ولكنه آمن للخيوط (آمن للعمليات المتعددة في نفس الوقت). يُستخدم لإنشاء سلاسل نصية قابلة للتغيير (قابلة للتعديل).
أنشئ StringBuffer بنص أولي:
StringBuffer sb = new StringBuffer("Hello");أضف المزيد من النص باستخدام append():
sb.append(" World");بعد تنفيذ الكود أعلاه، يحتوي sb على:
Hello World
تعديل النص باستخدام insert() و replace():
StringBuffer sb = new StringBuffer("Java");
sb.insert(0, "Hi "); // يضيف في البداية
sb.replace(0, 2, "Hey"); // يستبدل "Hi" بـ "Hey"بعد تنفيذ الكود أعلاه، sb يحتوي على:
Hey Java
التحدي
سهلقم بإنشاء طريقة (method) تسمى modifyText تأخذ ثلاث وسائط (arguments):
- سلسلة نصية (String) (
text) لتعديلها - سلسلة نصية (String) (
target) للبحث عنها - سلسلة نصية (String) (
replacement) لاستبدال target بها
يجب أن تقوم الطريقة بـ:
- إنشاء StringBuffer بالنص المدخل
- استبدال أول ظهور لـ target بـ replacement
- إضافة علامة تعجب في النهاية
- إرجاع السلسلة النصية النهائية
يجب أن تكون رسائل الإرجاع:
- إذا كان أي مدخل null: قم بإرجاع "Invalid input"
- إذا لم يتم العثور على target: قم بإرجاع النص الأصلي مع علامة تعجب
- للعملية الناجحة: قم بإرجاع النص المعدل
ورقة مرجعية
StringBuffer آمن للخيوط (thread-safe) ويُستخدم لإنشاء سلاسل نصية قابلة للتعديل.
إنشاء StringBuffer بنص أولي:
StringBuffer sb = new StringBuffer("Hello");إضافة نص باستخدام append():
sb.append(" World");إدراج نص في موضع محدد:
sb.insert(0, "Hi "); // يضيف في البدايةاستبدال النص باستخدام replace():
sb.replace(0, 2, "Hey"); // يستبدل الأحرف من الفهرس 0 إلى 2جرّب بنفسك
import java.util.Scanner;
public class Main {
public static String modifyText(String text, String target, String replacement) {
// اكتب الكود الخاص بك هنا
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String text = scanner.nextLine();
String target = scanner.nextLine();
String replacement = scanner.nextLine();
if (text.equals("null")) text = null;
if (target.equals("null")) target = null;
if (replacement.equals("null")) replacement = null;
System.out.println(modifyText(text, target, replacement));
}
}يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس Logic & Flow
1المصفوفات متعددة الأبعاد
أساسيات المصفوفات ثنائية الأبعادالوصول إلى عناصر المصفوفات ثنائية الأبعادالحلقات المتداخلة مع المصفوفات ثنائية الأبعادمراجعة - المصفوفات ثنائية الأبعادجمع وطرح المصفوفاتالمصفوفات المتعرجة (Jagged Arrays)المصفوفات ثلاثية الأبعاد وما بعدهاأنماط المصفوفات ثنائية الأبعاد الشائعةمراجعة - كل شيء عن المصفوفات2HashMap الجزء الأول
ما هو الـ HashMap؟تعريف الـ HashMapالوصول إلى القيمالتحقق من وجود المفتاحتعديل القواميسملخص - HashMap5HashSet الجزء الثاني
رياضيات - اتحاد الـ HashSetsرياضيات - تقاطع الـ HashSetرياضيات - فرق المجموعاترياضيات - الفرق المتناظرالمجموعات الجزئية والشاملةالتكرار عبر المجموعات8عمليات السلاسل النصية المتقدمة
أساسيات StringBuilderمقدمة إلى StringBufferأساسيات Regular Expressionsمطابقة الأنماط باستخدام RegexString Tokenizerتنسيق النصوص المتقدم3HashMap الجزء الثاني
دوال HashMapالتكرار باستخدام keySet()التكرار باستخدام entrySet()HashMap متداخلمراجعة - إدارة المستودعمراجعة - عمليات HashMap6التحكم المتقدم في تدفق البرنامج
العبارات المعنونةتعبير Switchمطابقة الأنماطجمل الحمايةمراجعة - تدفق التحكم