Wprowadzenie do StringBuffer
Część sekcji Logika i przepływ sterowania ścieżki Java w Coddy. Lekcja 45 z 59.
StringBuffer jest podobny do StringBuilder, ale jest bezpieczny wątkowo (bezpieczny przy wykonywaniu wielu operacji jednocześnie). Służy do tworzenia modyfikowalnych (możliwych do zmiany) ciągów znaków.
Utwórz StringBuffer z tekstem początkowym:
StringBuffer sb = new StringBuffer("Hello");Dodaj więcej tekstu za pomocą append():
sb.append(" World");Po wykonaniu powyższego kodu sb zawiera:
Hello World
Modyfikuj tekst za pomocą insert() i replace():
StringBuffer sb = new StringBuffer("Java");
sb.insert(0, "Hi "); // dodaje na początku
sb.replace(0, 2, "Hey"); // zastępuje "Hi" przez "Hey"Po wykonaniu powyższego kodu sb zawiera:
Hey Java
Wyzwanie
ŁatwyUtwórz metodę o nazwie modifyText, która przyjmuje trzy argumenty:
- Ciąg znaków (
text) do zmodyfikowania - Ciąg znaków (
target) do znalezienia - Ciąg znaków (
replacement), którym należy zastąpić target
Metoda powinna:
- Utworzyć obiekt StringBuffer z tekstem wejściowym
- Zastąpić pierwsze wystąpienie target ciągiem replacement
- Dodać wykrzyknik na końcu
- Zwrócić końcowy ciąg znaków
Zwracane komunikaty powinny być następujące:
- Jeśli dowolne dane wejściowe mają wartość null: zwrócić "Invalid input"
- Jeśli target nie zostanie znaleziony: zwrócić oryginalny tekst z wykrzyknikiem
- W przypadku powodzenia: zwrócić zmodyfikowany tekst
Spróbuj swoich sił
import java.util.Scanner;
public class Main {
public static String modifyText(String text, String target, String replacement) {
// Wpisz tutaj swój kod
}
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));
}
}Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Logika i przepływ sterowania
1Tablice wielowymiarowe
Podstawy tablic 2DDostęp do elementów tablic 2DPętle zagnieżdżone z tablicami 2DPodsumowanie — tablice 2DDodawanie i odejmowanie macierzyTablice postrzępioneTablice 3D i większeTypowe wzorce dla tablic 2DPodsumowanie — wszystko o tablicach2HashMap część 1
Czym jest HashMap?Deklarowanie HashMapDostęp do wartościSprawdzanie, czy klucz istniejeModyfikowanie słownikówPodsumowanie — HashMap5HashSet — część 2
Matematyka — suma zbiorów HashSetMatematyka — część wspólna zbiorów HashSetMatematyka — różnica zbiorówMatematyka — różnica symetrycznaPodzbiory i nadzbioryIterowanie po zbiorach8Zaawansowane operacje na ciągach znaków
Podstawy StringBuilderWprowadzenie do StringBufferPodstawy wyrażeń regularnychDopasowywanie wzorców za pomocą RegexTokenizer ciągów znakówZaawansowane formatowanie ciągów znaków3HashMap — część 2
Metody HashMapIterowanie za pomocą keySet()Iterowanie za pomocą entrySet()Zagnieżdżona HashMapPowtórka — zarządzanie magazynemPowtórka — operacje na HashMap6Zaawansowany przepływ sterowania
Instrukcje etykietująceWyrażenie switchDopasowywanie wzorcówKlauzule ochronnePowtórzenie — przepływ sterowania9Projekt — licznik unikalnych słów
Wprowadzanie i przechowywanie tekstuPrzetwarzanie słówPoćwicz samodzielnie: Kompilator Java online