开发者

how to delete a particular character at particular position from a character array ?

I need to delete a character from a character array and re-size the array. Until now, I have worked on replacing a particular character with a special character.

In this code I am searching for any matches that are found i.e , if any characters are matching in the male and female character array and if found I am replacing it with "*". Instead of that I have to delete that character and resize the array.

private static void Compare(String Male,String Female) {

    char[] male;
    char[] female;
    // converting a string into charecter array

    male=Male.toCharArray();
    female=Female.toCharArray();

    //finding开发者_StackOverflow社区 any matches i.e, any charecter is matching or not 
    for(int i=0;i<male.length;i++){

        for(int j=0;j<female.length;j++)
        {
            String m = Character.toString(male[i]);
            String fm = Character.toString(female[j]);
            if(m.equals(fm)){
            //if the charecters are equal  then  replacing them with "*"    

                male[i]='*';
                female[j]='*';

            }
        }
    }


Try this:

    String male = "maleg*$m-z";
    String female= "femal^\\$e-is";
    String deletedMale = male.replaceAll("["+Pattern.quote(female)+"]", "");
    String deletedFemale = female.replaceAll("["+Pattern.quote(male)+"]", "");
    System.out.println(deletedMale);
    System.out.println(deletedFemale);


You could use the ArrayUtils class within the org.apache.commons.lang library to make this a little easier: Array Utils Link

    public static void main(String[] args) {
        String Male = "male";
        String Female = "female";
        char[] male;
        char[] female;
        // converting a string into charecter array

        male=Male.toCharArray();
        female=Female.toCharArray();

        //finding any matches i.e, any charecter is matching or not 
        for(int i=0;i<male.length;){
        boolean remove = false;
            for(int j=0;j<female.length;)
            {
                String m = Character.toString(male[i]);
                String fm = Character.toString(female[j]);
                if(m.equals(fm)){
                //if the charecters are equal  then  replacing them with "*"    
                   female =  ArrayUtils.remove(female, j);
                   remove = true;
                }else{
                    j++;
                }
            }
            if(remove)
            {
                male =  ArrayUtils.remove(male, i);
            }else{
                i++;
            }
        }
        System.out.println(male);
        System.out.println(female);

}


Well, there are quite a few concerns with your code. Namely, the lack of conventions, no return value, and little to no clarity on what the problem actually is.

Anyway, this will remove duplicates only if the character appears in both strings.

private static void compare(String male, String female) {
    List<Character> male1 = addAll(male.toCharArray());
    List<Character> female1 = addAll(female.toCharArray());

    for (int i = 0; i < male1.size(); i++) {
        Character c = male1.get(i);
        if (female1.contains(c)) {
            while (male1.remove(c)) {
                i--;
            }
            while (female1.remove(c));
        }
    }

    // Do whatever else here, unless you need a char array, then convert it
    // if you need to.
    char[] maleA = toArray(male1);
    char[] femaleA = toArray(female1);

    System.out.println(new String(maleA));
    System.out.println(new String(femaleA));
}

Here are the methods referenced in the above code.

private static char[] toArray(List<Character> list) {
    char[] array = new char[list.size()];
    for (int i = 0; i < array.length; i++) {
        array[i] = list.get(i);
    }
    return array;
}

private static List<Character> addAll(char[] array) {
    List<Character> list = new ArrayList<Character>();
    for (char c : array) {
        list.add(c);
    }
    return list;
}

If you need to use other data types, just make a generic version, or change it.


You can achieve this easily using the following function:

String original_str="HOLLOW POOL";

String newone=original_str.replace("O", "*");     //Replaces the char "O" with "*"

System.out.print(newone);

The result will be H*LL*W P**L

That's it!!

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜