如何删除前导和尾随处的空格以及字符串中的多个空格?

时间:2017-09-04 04:51:34

标签: java string whitespace

For ex: "__I_love___India___"; 

在这个字符串中我想完全删除前导和尾随空格,并在java中的字符串中删除多个空格。

即。输出应该是

I love India”;

5 个答案:

答案 0 :(得分:2)

另一种方法是使用StringTokenizer并将空格作为标记分隔符。读取每个标记并将其写回StringBuilder。

import java.util.*;

class Words
{

    /**
     * Convenience method. 
     */
    public static StringBuilder deduplicateSpaces(String text)
    {
        return deduplicateDelimiters(text, " ");
    }

    public static StringBuilder deduplicateDelimiters(String text, String delim)
    {
        StringTokenizer       st = new StringTokenizer(text, delim);
        StringBuilder         sb = new StringBuilder();
        boolean         firstRun = true;

        while (st.hasMoreTokens())
        {
            sb.append(firstRun? "" : delim)  //prevent delimiter on the first token
              .append(st.nextToken()      ); //append token itself
            if (firstRun) { firstRun = false; }
        }

        return sb;
    }

    public static void main (String[] args)
    {
        String textS = "    A     bbbb    ccccc   ";
        String textU = "____A_____bbbb____ccccc___";

        System.out.println(deduplicateSpaces(textS));

        System.out.println(deduplicateDelimiters(textU, "_"));
    }
}

输出是:

A bbbb ccccc
A_bbbb_ccccc

答案 1 :(得分:2)

方法trim ()删除前导和尾随空格。为了从字符串的中间删除重复的空格,您可以使用正则表达式。

s2 = s1.replaceAll(" \\ s +","")。trim();

答案 2 :(得分:1)

尝试这个逻辑:

String input = "I love   India    ";
input = input.trim().replaceAll("\\s+", " ");

这里的想法是使用两个单独的操作来处理开头/结尾的空格和单词之间的空格。我们希望在开头/结尾完全删除空格,而String#trim()可以很好地删除它。然后,在单词之间只应出现一个空格,并且正则表达式替换处理这种情况。

答案 3 :(得分:1)

您可以尝试以下方法之一:

  • 纯Java - String after = before.trim().replaceAll("\\s+", " ");
  • 纯Java - String after = before.replaceAll("\\s{2,}", " ").trim();
  • Apache commons lang3 - String after = StringUtils.normalizeSpace(String str);
  • ...

答案 4 :(得分:0)

试试replaceAll("\\s{2,}", " ").trim(); 其中str是一个String变量,包含要从中去除空白区域的文本,并使用trim用于前导和尾随空格 由于我忘记用一个空格替换多个空格

,因此更新了评论结果