Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何删除前导和尾随处的空格以及字符串中的多个空格?_Java_String_Whitespace - Fatal编程技术网

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

Java 如何删除前导和尾随处的空格以及字符串中的多个空格?,java,string,whitespace,Java,String,Whitespace,在这个字符串中,我想完全删除前导和尾随空格,并在java中删除字符串中的多个空格 i、 e.产出应为: “我爱印度”” 尝试replaceAll(“\\s{2,},”).trim() 其中str是一个字符串变量,包含要从中去除空白的文本,并对前导和尾随空白使用trim 由于我忘了用一个空格替换多个空格而更新了注释请尝试replaceAll(“\\s{2,},”).trim() 其中str是一个字符串变量,包含要从中去除空白的文本,并对前导和尾随空白使用trim 由于我忘了用单个空格替换多个空格,

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

i、 e.产出应为:

我爱印度”

尝试
replaceAll(“\\s{2,},”).trim()
其中str是一个字符串变量,包含要从中去除空白的文本,并对前导和尾随空白使用trim
由于我忘了用一个空格替换多个空格而更新了注释

请尝试
replaceAll(“\\s{2,},”).trim()
其中str是一个字符串变量,包含要从中去除空白的文本,并对前导和尾随空白使用trim

由于我忘了用单个空格替换多个空格,因此根据注释进行了更新。

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

For ex: "__I_love___India___"; 
输出为:

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, "_"));
    }
}

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

For ex: "__I_love___India___"; 
输出为:

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, "_"));
    }
}
方法
trim()
删除前导空格和尾随空格。为了删除字符串中间的重复空格,可以使用正则表达式

s2=s1.replaceAll(“\\s+”,”).trim()

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

s2=s1.replaceAll(“\\s+”,”).trim()

试试这个逻辑:

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

尝试以下逻辑:

A bbbb ccccc
A_bbbb_ccccc

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

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

  • 纯Java-
    String after=before.trim().replaceAll(“\\s+”,”)
  • 纯Java-
    String after=before.replaceAll(“\\s{2,},”).trim()
  • -
    stringafter=StringUtils.normalizeSpace(stringstr)

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

  • 纯Java-
    String after=before.trim().replaceAll(“\\s+”,”)
  • 纯Java-
    String after=before.replaceAll(“\\s{2,},”).trim()
  • -
    stringafter=StringUtils.normalizeSpace(stringstr)


谷歌搜索“java regex remove extra spaces”时返回的第一个结果是,您可以使用
replaceAll()
将多个空格替换为单个空格,并使用
trim()
删除前导空格和尾随空格。但请注意在您的问题中使用“请提供代码”,因为您不是我们的雇主,我们也不是代码编写服务机构。这通常会让你落选。我给了你一些有力的提示,现在去查一下javadoc,然后自己做剩下的工作。@fjoe注意,如果我想删除前导空格和尾随空格,并在Google上找到一个“只删除前导空格”的点击,我可能不会看这个问题。结果是给出了正确的答案,但那个问题的海报把标题弄糟了。我接着改变了另一个问题的标题。现在,也许其他人也能找到它。停止投票的人最近太快就开始批评了。你可以使用
replaceAll()
将多个空格替换为单个空格,并使用
trim()
删除前导空格和尾随空格。但请注意在您的问题中使用“请提供代码”,因为您不是我们的雇主,我们也不是代码编写服务机构。这通常会让你落选。我给了你一些有力的提示,现在去查一下javadoc,然后自己做剩下的工作。@fjoe注意,如果我想删除前导空格和尾随空格,并在Google上找到一个“只删除前导空格”的点击,我可能不会看这个问题。结果是给出了正确的答案,但那个问题的海报把标题弄糟了。我接着改变了另一个问题的标题。现在,也许其他人也能找到它。停止投票的人最近太快就开始批评了。这将删除字符串中的所有空白。@macmoonshine不,不会。你投票和评论的速度太快了。把枪收起来,伙计:)你在编辑答案之前被枪杀了-你现在死了;-)@是的,人们最近太快就开始批评了。我注意到很多新手被否决了,而不是被帮助了。真丢脸。这应该是一个社区。下层选民是否修正了投票理论?不。为什么不呢?你的意思是什么?这将删除字符串中的所有空白。@macmoonshine不,不会。你投票和评论的速度太快了。把枪收起来,伙计:)你在编辑答案之前被枪杀了-你现在死了;-)@是的,人们最近太快就开始批评了。我注意到很多新手被否决了,而不是被帮助了。真丢脸。这应该是一个社区。下层选民是否修正了投票理论?不。为什么不呢?你的意思是什么?我没有投反对票,因为这是一个想法(可能有点低水平),但如果有一个小例子来回答这个问题,那就太好了。@AxelH完全正确。我没有投反对票,因为这是我的想法