JAVA字符串中,只要有连续的空格就去掉且但要保留一个空格;如果只是一个空格就不用处理;怎么实现?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA字符串中,只要有连续的空格就去掉且但要保留一个空格;如果只是一个空格就不用处理;怎么实现?相关的知识,希望对你有一定的参考价值。

举个例子:
String str = "大 家 好 啊";
这里“大家”之间有3个空格,“家好”之间有2个空格,“好啊”之间有1个空格,现在要求是把“大家”和“家好”之间的空格都处理成1个空格,“好啊”之间本身就是一个空格,不用处理;
最终效果就是这样:
String str = "大 家 好 啊";
String keywords = request.getParameter("values").trim();
String result = "";

for(int i = 0; i <= keywords.length(); i++)
for(int j = i + 1; j< keywords.length(); j++)
if(keywords.charAt(i) == ' ')
if(keywords.charAt(j) == ' ')
result = keywords.replace(" ", "");




System.out.println(result);

-----------------------------
输出结果为:
大家好啊
-----------------------------
请问,你能不能给出代码,或帮我修改下我的代码?

一个循环就可以了
用一个布尔值作为前一个字符是否为空格,
当前字符也是空格,就不用插入了

String keywords = "大 家 好 啊";
StringBuilder result = new StringBuilder();
boolean space = false;// 前一个是否为空格,默认第一个不是
for (int i = 0; i < keywords.length(); i++)
if (keywords.charAt(i) != ' ')
space = false;
result.append(keywords.charAt(i));
//end 当前不是空格
else if (!space)
space = true;
result.append(keywords.charAt(i));
//end 当前是空格,但前一个不是空格

//没有else了,省略了当前是空格,前一个也是空格,当然不用理它了

System.out.println(keywords);
System.out.println(result.toString());
参考技术A 可以直接用正则表达式
public void lianxuStr()

String s="大 家 好 啊";
String xx=s.replaceAll("[\\s]2,", " ");
System.out.println(xx);
参考技术B 写两个循环...第一个读到空格就判断下一格是不是空格...是的话把它去掉...
然后直到没有改变退出第二个循环...
参考技术C String s = "大 家 好 啊";
s = s.replaceAll(" +", " ");
System.out.println(s);
参考技术D string.replaceAll("\\s+"," ");

javascript 如何去掉空格

去掉空格的本质就是将字符串中的空字符串删除,根据这个解决思路,我们有多种解决方法。

方法一:遍历法。遍历字符串中的字符保留有效字符

function trim(str)
    var i;
    var rst = '';
    for(i=0;i<str.length;i++)
        var c = str.charAt(i);
        if(c!==" ")
            rst = rst + c;
        
    
    return rst;

var testStr = " te s t  ";
testStr = trim(testStr);
console.log(testStr );
//test

方法二:利用数组。利用数组特性简化代码

function trim(str)
    var chars = str.split(" ");
    return chars.join('');

var testStr = " te s t  ";
testStr = trim(testStr);
console.log(testStr );
//test

方法三:递归法。利用正则表达式递归去除空格符

function trim(str) 
  return str.replace(/(^\\s+)|(\\s+$)/g, "");

var testStr = " te s t  ";
testStr = trim(testStr);
console.log(testStr );
//test

方法四:利用jquery.js。如果你使用jquery,可以使用jquery里的trim函数

var testStr = " te s t  ";
testStr = $.trim(testStr);
console.log(testStr );
//test

参考技术A

一、去掉字符串前后所有空格

function Trim(str)
          
             return str.replace(/(^\\s*)|(\\s*$)/g, ""); 
     

说明:

如果使用jQuery直接使用$.trim(str)方法即可,str表示要去掉前后所有空格的字符串。

二、去掉字符串中所有空格(包括中间空格,需要设置第2个参数为:g)

 function Trim(str,is_global)
        
            var result;
            result = str.replace(/(^\\s+)|(\\s+$)/g,"");
            if(is_global.toLowerCase()=="g")
            
                result = result.replace(/\\s/g,"");
             
            return result;

参考技术B

    可以使用自带的函数trim,如:var str = " a b c "; str = str.trim();这种方法用起来比较简单方便。

    可以用正则表达式进行匹配,蒋空格replace或者replaceAll替换掉。如:

    删除左右两端的空格str.replace(/(^\\s*)|(\\s*$)/g, "");
    删除左边的空格    str.replace(/(^\\s*)/g,"");

    删除右边的空格    str.replace(/(\\s*$)/g,"");

    可以用自定义trim函数,如:

    function trim(str)
           var count = str.length;
           var st = 0; // start
           var end = count - 1; // end
           if (str == "")
               return s;
           while (st < count)
               if (str.charAt(st) == " ")
                   st++;
               else
                   break;
           
           while (end > st)
               if (str.charAt(end) == " ")
                   end--;
               else
                   break;
           
           return str.substring(st, end + 1);
       

    可以将str传换成字符数组,然后每个元素进行匹配,如果是空格,就移除,最后再转换成字符串。

    具体情况具体分析。

参考技术C 如果是要去掉首尾的空格,直接调用trim()方法,例如:" str ".trim()的返回值是"str"
如果是要去掉字符串中间的空格,就用replace(),例如:"str 1".replace(/\ /, ""),返回值是"str1"(%s是表示所有的空字符,包括空格,制表符等等)
参考技术D jquery本身自带了trim方法,实现方式如下:

1、$.trim(" abc ") // abc

同样也可以使用一下自己编写的方法用正则表达式进行除去空格 :
方法体:
function trim(str)
return str.replace(/(^\s+)|(\s+$)/g, "");

调用
trim(" abc ") // =abc

以上是关于JAVA字符串中,只要有连续的空格就去掉且但要保留一个空格;如果只是一个空格就不用处理;怎么实现?的主要内容,如果未能解决你的问题,请参考以下文章

java问题:String字符串替换部分空格,保留特定空格,如何做?

javascript 如何去掉空格

java中怎么用toString方法去除字符串中的标点,符号和数字?

C#:将字符串中连续空格转换为一个空格

JS问题,去掉字符串的前后空格

将字符串"This is a Python book"中的多余空格删除,即如果有连续空格只保留一?