Hassaan Rabbani
Hassaan Rabbani

Reputation: 2465

Remove characters at certain position at string

I want to remove certain characters at specific positions of the String. I have the positions, but I am facing problems removing the characters.

what i am doing is:

if (string.subSequence(k, k + 4).equals("\n\t\t\t")){
    string = string.subSequence(0, k) + "" + s.subSequence(k, s.length());
}

I need to remove "\n\t\t\t" from string

Upvotes: 2

Views: 20687

Answers (6)

Machhindra Neupane
Machhindra Neupane

Reputation: 719

public static String remove(int postion, String stringName) {
    char [] charArray = stringName.toCharArray();
    char [] resultArray = new char[charArray.length];
    int count = 0;
    for (int i=0; i< charArray.length; i++) {
        if (i != postion-1) {
            resultArray[count] = charArray[i];
            count++;
        }
    }
    return String.valueOf(resultArray);
}

Upvotes: 1

A.Sfon
A.Sfon

Reputation: 1

First you have to put \ in front of the special characters in order to do the matching of the two string, thus you will have .equals("\"\\n\\t\\t\\t\""), otherwise the substring is not going to be recognized inside the string. Then the other thing which you have to fix is the position of the index begin and end inside .subSequence(k,k+10) since the first and the last character are 10 positions apart and not 4. Note also that when you patch the string you go from position 0 to k and from k+10 to str.length(). If you go from 0 --> k and k --> length() you just join the old string together :). Your code should work like this, I have tested it already

   if(str.substring(k, k+10).equals("\"\\n\\t\\t\\t\""))
        {
     newstr = str.substring(0,k)+str.substring(k+10,(str.length()));
         }

also you don't need +" "+ since you are adding strings. Whoever wants to see the effect of this can run this simple code:

public class ReplaceChars_20354310_part2 {

/**
 * @param args the command line arguments
 */
public static void main(String[] args) {


    String str = "This is a weird string containg balndbfhr frfrf br brbfbrf b\"\\n\\t\\t\\t\"";

    System.out.println(str); //print str 

    System.out.println(ReplaceChars(str));  //then print after you replace the substring 

    System.out.println("\n");  //skip line 


    String str2 = "Whatever\"\\n\\t\\t\\t\"you want to put here"; //print str 

    System.out.println(str2);  //then print after you replace the substring

    System.out.println(ReplaceChars(str2));

}


      //Method ReplaceChars

       public static String ReplaceChars (String str) {

       String newstr ="";

       int k;

        k = str.indexOf("\"\\n\\t\\t\\t\""); //position were the string    starts within the larger string

      if(str.substring(k, k+10).equals("\"\\n\\t\\t\\t\""))
        {

       newstr = str.substring(0,k)+str.substring(k+10,(str.length())); //or just str

        }


           return newstr;

        }//end method


     }

Upvotes: 0

Meghana Randad
Meghana Randad

Reputation: 450

Use StringBuilder

String str="    ab a acd";
        StringBuilder sb = new StringBuilder(str);

        sb.delete(0,3);
        sb.deleteCharAt(0);

        String result = sb.toString();
        System.out.println(result);

Upvotes: 1

anguyen
anguyen

Reputation: 477

Put your points in a HashSet called set

StringBuilder sb=new StringBuilder();
for(int i=0;i<string.length();i++){
       if(!set.contains(string.charAt(i)))
           sb.append(string.charAt(i));  
 }

 String reformattedString=sb.toString();

Upvotes: 0

Zong
Zong

Reputation: 6230

Use StringBuilder:

StringBuilder sb = new StringBuilder(str);

sb.delete(start, end);
sb.deleteCharAt(index);

String result = sb.toString();

Upvotes: 15

Ruchira Gayan Ranaweera
Ruchira Gayan Ranaweera

Reputation: 35557

Use String.ReplaceAll() instead of this.

But if you only want to remove specific element only you can use substring(). Now you want to know position which you already know.

Upvotes: 0

Related Questions