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,"");
可以用自定义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传换成字符数组,然后每个元素进行匹配,如果是空格,就移除,最后再转换成字符串。
具体情况具体分析。
如果是要去掉字符串中间的空格,就用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字符串替换部分空格,保留特定空格,如何做?