黑马程序员技术交流社区

标题: 字符串中关于消除空格问题 [打印本页]

作者: 王冰    时间: 2012-7-6 04:33
标题: 字符串中关于消除空格问题
本帖最后由 王冰 于 2012-7-6 14:39 编辑

下面代码是去除字符串两端的空格的,有谁能帮忙弄一个消除字符串中所有空格的代码?
public static String myTrim(String str)
{
      int start = 0;
      int end = str.length()-1;
      while (start<=end && str.charAt(start)==' ')
            start++;
      while (start<=end && str.charAt(end)==' ')
            end--;
      return str.substring(start,end+1);
}


作者: 杨_扬    时间: 2012-7-6 05:40
本帖最后由 杨_扬 于 2012-7-6 05:44 编辑

public class SplitString {
        public static void main(String[] args) {
                //定义一个字符串,可以看到,这个字符串,首、尾、中间,都有空格
                String s = "   a b c d           ";
                //首先,我们用String类的方法trim()去掉字符串首尾的空格,trim()方法是一个专门用来去掉字符串首尾空格的方法
                s = s.trim();
                //然后,再调用split()方法以“ ”作为key去拆分字符串
                String[] split = s.split(" ");
                //为了避免在重新连接字符串时产生过多的garbage(抱歉,中文这个词在论坛是敏感词) object,因此这里使用StringBuffer
                StringBuffer sb = new StringBuffer("");
                //将拆分好的字符串重新连接
                for (int i=0; i<split.length; i++){
                        sb.append(split);
                }
                //输出
                System.out.println(sb.toString());
        }
}
下面是在帮助文档中关于用到的两个方法的解释
public String trim()       此字符串移除了前导和尾部空白的副本;如果没有前导和尾部空白,则返回此字符串。

public String[] split(String regex)        根据给定正则表达式的匹配拆分此字符串。 该方法的作用就像是使用给定的表达式和限制参数 0 来调用两参数 split 方法。因此,所得数组中不包括结尾空字符串。
例如,字符串 "boo:and:foo" 使用这些表达式可生成以下结果:
Regex结果
:
{ "boo", "and", "foo" }
o
{ "b", "", ":and:f" }

参数:regex - 定界正则表达式 返回:字符串数组,它是根据给定正则表达式的匹配拆分此字符串确定的 抛出: PatternSyntaxException - 如果正则表达式的语法无效
作者: 曹魁    时间: 2012-7-6 08:34
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class StringUtils {

    public static String replaceBlank(String str) {
           
        String dest = "";

        if (str!=null) {

            Pattern p = Pattern.compile("\\s*|\t|\r|\n");

            Matcher m = p.matcher(str);

            dest = m.replaceAll("");
        }

        return dest;

        }

    public static void main(String[] args)
        {
                 System.out.println(StringUtils.replaceBlank("just do it!"));
        }
}
注:String s = "你要去除的内容";

      去除空格:s = s.replace('\\s','');

   
作者: 孔令金    时间: 2012-7-6 08:48
        public static void main(String[] args) {
                String str = "我 爱 我 家。    我 爱 祖 国。 ";
                char[] chars = str.toCharArray();
                StringBuffer s = new StringBuffer();
                for(int i = 0;i<chars.length;i++){
                        if(chars[i] != ' '){
                                s.append(chars[i]);
                        }
                }
                System.out.println(s.toString());
        }
输出:我爱我家。我爱祖国。
作者: 王冰    时间: 2012-7-6 14:37
曹魁 发表于 2012-7-6 08:34
import java.util.regex.Matcher;
import java.util.regex.Pattern;

用了正则表达式啊,看来我得抽时间看看正则表达式
作者: 朝哥    时间: 2012-7-6 16:31
没必要用到正则。

class Test
{
        public static void main(String[] args)
        {
                String str = "   aa bb    cc   ";
                String s = removeSpace(str);
                System.out.println(s);
        }

        public static String removeSpace(String str)
        {
                StringBuilder sb = new StringBuilder();
                char[] ch = str.toCharArray();
                for (int i = 0 ; i < ch.length ;i++ )
                {
                        if (ch[i]!=' ')
                        {
                                sb.append(ch[i]);
                        }
                }
                return sb.toString();
        }
}

最基础的!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2