Java Replace ve Replaceall metodu farkı nedir?

nc.abidin

Hectopat
Katılım
8 Şubat 2021
Mesajlar
385
Çözümler
3
Daha fazla  
Cinsiyet
Erkek
Java'da string sınıfında replace ve replaceall metotları bulunmaktadır. Bu metodlar gördüğüm kadarıyla aynı işi yapıyorlar ama benim gördüğümün dışında farkları var ki böyle bir ayrım yapmışlar. İşte merak ettiğim bu fark nedir?

Okuduğum şeyleri de tam olarak kafamda canlandıramadığım için bana bu farkı anlayabileceğim bir şekilde anlatabilecek var mı?

docs.oracle.com'da böyle tanımlanmış.



Teşekkür ederim.
 
Son düzenleyen: Moderatör:
Konuyu yanlış anlamışım düzeltiyorum o nedenle, replace() metodu RegEx kabul etmiyor ancak replaceAll() metodu RegEx ile çalışabiliyor sanırım aralarındaki fark bu.
 
Son düzenleme:
Java bilmiyordum ama "replaceAll" sanırım regex kullanıyor. Fark bu.

Bu JavaScript .
 
Söylediğiniz şey geçerli gözükmüyor.

 
Biri tek bir char karakteri için, biri char dizisi için sonuncusu da verilen regular exp'e göre değiştirilmesi gereken yeri değiştiriyor. Gayet açık aslında temel veri türlerine ve function overloading'e bir göz atmanı tavsiye ederim, kolay gelsin.
 
Özür dilerim dostum JavaScript sandım ben konuyu, benim hatam. Yanlış bilgi vermek istemem Java pek okumadım o yüzden hiç bir şey söylemesem daha iyi bilen arkadaşlar yardımcı olsunlar.

Ama replace() substring de replace edebiliyor gördüğüm kadarıyla. Yani replace("hello", "world") yapsak bu işlemi yerine getiriyor. Bu durumda sanırım aralarındaki fark birinin RegEx ile çalışabiliyor diğerinin çalışamıyor olması. Doğru mudur?

Dokümanları okuduğumda tek farkın bu olduğunu görüyorum.
 
Son düzenleme:
Teşekkür ederim. Farklı veri türlerine göre overloading yaptığının ve ona göre çalıştığının farkındayım.

Ama şu ana kadar yazdığım kodlarda ve denediğim örneklerde her iki metod da (replace ve replaceAll) aynı şekilde programı çalıştırdı ve hep aynı sonucu verdiler.

Ne tür bir kullanımda ikisi birbiri yerine kullanılamaz diye merak ediyorum.
 
Ne tür bir kullanımda ikisi birbiri yerine kullanılamaz diye merak ediyorum.
RegEx ile replace etmek istediğinde replace() kullanılamaz, çünkü fonksiyon string param istiyor. RegEx kullanmak istediğin zaman replaceAll() kullanman gerekiyor, okuduğum tüm dokümanlar bu şekilde söylüyor. Basit bir testle anlayabilirsin bunu, bence aralarındaki fark budur.
 
regular exp'i arastir.

Java:
String test = "aaaaaaa1aaaaaa2aaaaaaaaa";
System.out.println(test.replaceAll("[0-9]","3"));
System.out.println(test.replace("[0-9]","3"));
 
Evet regular exp'i bilmediğim için tam olarak anlamamışım. İkinize de teşekkür ederim.
@Fatalis & @Dynamics

Bu da ChatGPT cevabı, yardımcı oldu diye ekliyorum.

 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için çerezleri kabul etmelisiniz. Daha Fazlasını Öğren.…