2012-11-05 8 views
5

Sto provando a prendere una parte di una stringa dal punto (a, b) e sostituire le lettere dai valori dati nella stringa in "X".Java Modifica parte di stringa con carattere specifico

Esempio: se la stringa è ABC123 e switch(3,5) viene chiamata, la cambierà in ABCXXX.

Finora ho:

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

Sono molto perso .... grazie per qualsiasi aiuto!

+0

Per caso, è questo compito? – Azulflame

+0

La parola XXX o la parola restituita dovrebbero essere una parola predefinita? Dovrebbe sempre essere XXX o talvolta XYZ o WXY? – Heskja

+0

Non è possibile assegnare un nome al metodo 'switch'. Questa è una parola chiave riservata in Java –

risposta

1

Java String s sono immutabili e non possono essere cambiati. Potresti comunque scrivere un metodo che restituisca un new String con quei caratteri evidenziati. A StringBuilder è una buona classe per familiarizzare poiché consente manipolazioni di stringhe veloci.

documentazione StringBuilder: 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

Capisco questo ma questo metodo è per un oggetto che può avere solo due parametri (int, int). La sottostringa che sto cercando di sostituire proviene da un oggetto creato in un'altra classe. – user1729448

+0

Sembra che tu stia cercando di aggiornare un riferimento, non modificare la stringa attuale. In questo esempio, invece di creare un nuovo 'String replace', potresti semplicemente fare' test = replaceRange (test, 3, 8) 'Questo aggiornerebbe il tuo riferimento. Quindi, il tuo metodo potrebbe semplicemente prendere una variabile 'start' e' end' a quel punto puoi fare 'myVar = replaceRange (myVar, start, end);'. – Joe

+0

Grazie ... l'ho fatto funzionare – user1729448

0

Basta eseguire due sottostringhe per le parti sinistra e destra (che si desidera conservare), quindi concatenarle con il numero appropriato di X tra.

-1

Prova questo:

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) non solo dare loro il codice. dare loro gli strumenti di cui hanno bisogno per portare a termine il lavoro. B) fai una formattazione corretta per la domanda ("Questo è quello che devi fare, ecco un modo per farlo: * inserire il codice *. Funziona con * inserire descrizione *) – Azulflame

+0

Ho provato e ha funzionato e se vedono il codice in sml snippet possono capire meglio ... e ho formattato il codice da ctrl + K e inviato ... non so che cosa è la formattazione altro che questo ??? – BloodRed

+0

Formattazione come in come viene presentata la domanda – Azulflame

-1

A pochi passi che potrebbero aiutare:

  1. identificare il numero di caratteri che è necessario modificati
  2. Identificare il lato sinistro della stringa che si intende mantenere (str.substring(0,p1);)
  3. Identificare il lato destro della stringa che si desidera conservare (str.substring(p2,str.length());)
  4. metterli insieme (String output = firstPart + addedChars + secondPart;)
1

Usa StringBuilder e il suo metodo di replace(int start, int end, String str)