使用字符数组从字符串中删除空格

时间:2018-03-05 14:29:49

标签: java

public class RemoveSpaceFromString {

    public static void main(String args[])
    {
        Scanner s1=new Scanner(System.in);
        String str="";
        System.out.println("enter the string");
        str=s1.nextLine();
        int l=str.length();
        char ch[]=str.toCharArray();

        for(int i=0;i<l;i++)
        {
            if(ch[i]==' ')
            {
                for(int k=i;k<l-1;k++)
                {
                    ch[k]=ch[k+1];
                }
                l--;
                i--;
            }
        }
        String str2=new String(ch);
        System.out.println(str2);
    }
}
  

ouptput:

enter the string
my name is abc
mynameisabcccc

如何从末尾删除额外的'c'

2 个答案:

答案 0 :(得分:1)

只需使用

str = s1.nextLine().replaceAll(" ", "");;

我看到@cricket已经在这个问题的评论中指出了这一点! 他还建议使用这样的正则表达式:

str = str.replaceAll("\\s", "");   // for only one white space
str = str.replaceAll("\\s+", "");  // for multiple white spaces

但要回答原始问题,如何使用字符数组从字符串中删除空格:

在原始示例中,您将每个char元素向右移动,但最后一个元素始终保持不变!因此,如果你想再次得到这个char数组的String,你必须减去它变小的数量(由于删除了空格)!

这是代码(查看倒数第二行(倒数第二行)):

    Scanner s1=new Scanner(System.in);

    System.out.println("enter the string");
    String str=s1.nextLine();
    int l=str.length();

    char ch[]=str.toCharArray();


    for(int i=0;i<l;i++)
    {
        if(ch[i]==' ')
        {
            for(int k=i;k<l-1;k++)
            {
                ch[k]=ch[k+1];
            }
            l--;
            i--;
        }
    }
    String str2=new String(ch,0,l);
    System.out.println(str2);

答案 1 :(得分:0)

而不是

String str2 = new String(ch);

DO

String str2 = new String(ch, 0, l);

或全部减少到

String str2 = str.replace(" ", "");