2012-11-05 18 views
5

Dize içindeki bir noktadan (a, b) bir dizenin bir parçasını almaya çalışıyorum ve dizedeki verilen değerlerden gelen harfleri 'X' olarak değiştirin.Java Özgün Karakterli Dizinin Parçasını Değiştirme

Örnek: Dize ABC123 ve switch(3,5) çağrılıyorsa, ABCXXX olarak değişir.

Şimdiye kadar var: Herhangi bir yardım için

public void switch(int p1, int p2) 
{ 
    String substring = myCode.substring(p1,p2-1); 
} 

çok kayboldum .... teşekkürler!

+0

, bu ödevi? – Azulflame

+0

XXX bölümü veya dönen sözcük önceden tanımlanmış bir kelime mi olmalı? Her zaman XXX veya bazen XYZ veya WXY mi? – Heskja

+0

"Anahtar" yönteminizi isimlendiremezsiniz. Bu, Java –

cevap

1

Java String ler iletmenin ve değiştirilemez koyun. Ancak, new String işaretli bir karakter yazarak dışarıda bu karakterleri yazabilirsiniz. StringBuilder, hızlı dizi manipülasyonlarına izin verdiği için kendinizi iyi tanımak için iyi bir sınıftır.

StringBuilder belgeleri: Şans eseri http://docs.oracle.com/javase/7/docs/api/java/lang/StringBuilder.html

public class StringReplace { 

    public static String replaceRange(String s, int start, int end){ 
     StringBuilder b = new StringBuilder(s); 

     for(int i = start; i <= end; i++) 
      b.setCharAt(i, 'x'); 

     return b.toString(); 
    } 

    public static void main(String[] args){ 
     String test = "mystringtoreplace"; 
     String replaced = replaceRange(test, 3, 8); 
     System.out.println(replaced); 
    } 

} 
+0

Bunu anlıyorum ama bu yöntem yalnızca iki parametreye sahip olabilen bir nesne içindir (int, int). Değiştirmeye çalıştığım alt dize, başka bir sınıfta oluşturulan bir nesneden gelir. – user1729448

+0

Gerçek dizgiyi değiştirmeyen bir referansı güncellemeye çalıştığınız anlaşılıyor. Bu örnekte, yeni bir 'String değiştirdiğini 'oluşturmak yerine, yalnızca şunu yapabilirsiniz: test = replaceRange (test, 3, 8)' Bu, referansınızı günceller. Yani, yönteminiz sadece 'start' ve' end' değişkenini alabiliyorsunuz, bu noktada 'myVar = replaceRange (myVar, start, end);'. – Joe

+0

Teşekkürler ... Çalıştırdım – user1729448

0

Sol ve sağ taraftaki parçalar için (tutmak istediğiniz) iki alt dizgi yapın ve ardından bunların arasında uygun sayıda X ile uyuşun.

-1

bu deneyin: yardımcı olabilecek

public class Sub { 

    public String replaceChar(String str, int x, int y){ 
     String temp = "XXX"; 
     String str1 = ""; 
     str1 = str.substring(x, y+1); 
     str = str.replace(str1, temp); 
     return str; 
    } 

    public static void main(String args[]){ 
     Sub s = new Sub(); 
     System.out.println(s.replaceChar("ABC123", 3, 5)); 
    } 

} 
+0

A'da ayrılmış bir anahtar sözcükdür. A) sadece onlara kod vermeyin. Onlara işi bitirmek için ihtiyaç duydukları araçları verin. B) soru için doğru biçimlendirme yapmak ("Yapmanız gereken şey budur, burada bunu yapmanın bir yolu var: * kod ekle *. Bu çalışır * ekleme açıklaması *) – Azulflame

+0

Denedim ve çalıştı ve eğer kodu görürlerse smal snippet'te daha iyi anlayabilirler ... ve ctrl + K ile biçimlendirilmiş kodu gönderdim ve ... biçimlendirmenin ne olduğunu bilmiyorum. Bu – BloodRed

+0

Sorunun nasıl sunulduğunu biçimlendiriyor – Azulflame

-1

bir kaç adım:

  1. saklamak niyetinde dizesinin sol tarafında belirleyin sen
  2. değişti gerek karakter sayısını belirlemek (str.substring(0,p1);)
  3. Saklamak istediğiniz dizenin sağ tarafını belirleyin (str.substring(p2,str.length());)
  4. birlikte (String output = firstPart + addedChars + secondPart;)
1

Kullanım StringBuilder ve replace(int start, int end, String str) yöntemi

İlgili konular