Substring i replace z trzema argumentami

0
 surname.substr(surname.length() - 3,surname.length() - 1) == "ski";
surname.replace(1,surname.length() - 4,surname.length() - 4,'*'); 

Czy te komendy z c++ można zamienić na jave ? Bo widziałem tylko w javie te komendy z dwoma argumentami.

1

W Javie Stringi porównuje się metodą equals

surname.substr(surname.length() - 3,surname.length() - 1).equals("ski");

Zapewne można uprościć

surname.endsWith("ski");
0

A czy replace jest tylko dla dwóch argumentów w javie ? jak wpiszę replace albo substring java to w dokumentacji pokazuje tylko funkcje z dwoma argumentami.

0

Nie ma.

0

w javie nie da się takiej

 surname.replace(1,surname.length() - 4,surname.length() - 4,'*');

komendy niczym zastąpić ?

0

Da się

surname.substring(0,surname.length()-4)+"****";
0

ta komenda robi to samo co replace ? Bo w replace miałem ustawione tak,że pierwszy argument oznaczał od któego znaku zacząć, drugi argument ile znaków zastąpic , trzeci argument - do którego znaku zastępować, czwarty argument - jakim znakiem zastąpić te wybrane elementy.

0

Niezupełnie, ale nie wiem co chcesz uzyskać. Chcesz pewien fragment zmiennej surname zastąpić gwiazdkami. Który fragment?
Wg dokumentacji metody replace trzeci argument oznacza ile znaków wstawić.

0

jak mam np. nazwisko Kowalski to pierwsza litera i trzy ostatnie mają zostać bez zmian a reszta ma być zastąpiona gwiazdkami, czyli nazwisko powinno wyglądać tak: K****ski

Możliwe, że w opisie pomyliłem 2 argument z 3.

0

A jak masz nazwisko Ali albo Tusk, to jak ma ono wyglądać po przekształceniu?

0

Mam wcześniej ifa określającego, że tylko dla nazwisk które kończą się na "ski" następuje replace taki jak wcześniej napisałem.

0

Dlaczego, gdy chcę użyć stąd: http://docs.oracle.com/javase/7/docs/api/java/lang/StringBuilder.html#replace(int,%20int,%20java.lang.String)

funkcji replace, to wyświetla się informacja, że metoda replace nie jest zdefiniowana mimo,że dałem na początku import java.lang.StringBuilder;

0
String replaceWithStars(String s){
    char[] znaki = s.toCharArray();
    for(int i=1;i<znaki.length-4;i++){
        znaki[i] = '*';
    }
    return new String(znaki);
}
0

gdy tej funkcji chcę użyć tak:

replaceWithStars(abc);

to pokazuje błąd, że nie można statyczną referencją dostać się do nie statycznej funkcji replacewithstars. nad funkcją main dałem deklarację i definicję tej funkcji.

0

Ale czemu nie mogę użyć tego skoro w stringbuilder jest taka funkcja ?

String abc = "Kurczaki";
String no = abc.replace(1,3,'x');
0

Ty programujesz od tygodnia?

  1. Każda funkcja wywoływana z funkcji static też musi być static.
  2. Takiej funkcji
String no = abc.replace(1,3,'x');

nie ma ani w klasie String ani w klasie StringBuilder.
Moim zdaniem powinieneś wrócić do HelloWorld!.

0

tutaj jest//docs.oracle.com/javase/7/docs/api/java/lang/StringBuilder.html
tylko teraz zauważyłem, że dla zmiennej StringBuilder i nie wiem jak ją wywołać.

0

chyba tak będę musiał to zrobić:

for(int i = 1; i < abc.length() - 4; ++i)
		{
			char c = abc.charAt(i);
			System.out.print(c);
		}

1 użytkowników online, w tym zalogowanych: 0, gości: 1