Java 中删除字符串中的空格
我有一个这样的字符串:
mysz = "name=john age=13 year=2001";
我想删除字符串中的空格。我尝试了 trim()
但这只删除了整个字符串前后的空格。我还尝试了 replaceAll("\\W", "")
但随后 =
也被删除了。
我怎样才能获得一个字符串:
mysz2 = "name=johnage=13year=2001"
I have a string like this:
mysz = "name=john age=13 year=2001";
I want to remove the whitespaces in the string. I tried trim()
but this removes only whitespaces before and after the whole string. I also tried replaceAll("\\W", "")
but then the =
also gets removed.
How can I achieve a string with:
mysz2 = "name=johnage=13year=2001"
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(30)
st.replaceAll("\\s+","")
删除所有空格和不可见字符(例如制表符、\n
)。st.replaceAll("\\s+","")
和st.replaceAll("\\s","")
产生相同的结果。第二个正则表达式比第一个正则表达式快 20%,但随着连续空格数量的增加,第一个正则表达式的性能比第二个正则表达式更好。
如果不直接使用,则将值分配给变量:
st.replaceAll("\\s+","")
removes all whitespaces and non-visible characters (e.g., tab,\n
).st.replaceAll("\\s+","")
andst.replaceAll("\\s","")
produce the same result.The second regex is 20% faster than the first one, but as the number consecutive spaces increases, the first one performs better than the second one.
Assign the value to a variable, if not used directly:
\w
= 任何单词字符\W
= 任何非单词字符(包括标点符号等)\s
= 任何单词这是一个空格字符(包括空格、制表符等)\S
= 任何不是空格字符的字符(包括字母和数字,以及标点符号等)(编辑:如所指出的,如果您希望
\s
到达正则表达式引擎,则需要转义反斜杠,从而导致\\s
。)\w
= Anything that is a word character\W
= Anything that isn't a word character (including punctuation etc)\s
= Anything that is a space character (including space, tab characters etc)\S
= Anything that isn't a space character (including both letters and numbers, as well as punctuation etc)(Edit: As pointed out, you need to escape the backslash if you want
\s
to reach the regex engine, resulting in\\s
.)这个问题最正确的答案是:
我刚刚从其他答案中改编了这段代码。我发布它是因为除了完全符合问题的要求之外,它还表明结果作为新字符串返回,原始字符串没有被修改,正如某些答案所暗示的那样。
(经验丰富的 Java 开发人员可能会说“当然,您实际上无法修改字符串”,但这个问题的目标受众很可能不知道这一点。)
The most correct answer to the question is:
I just adapted this code from the other answers. I'm posting it because besides being exactly what the question requested, it also demonstrates that the result is returned as a new string, the original string is not modified as some of the answers sort of imply.
(Experienced Java developers might say "of course, you can't actually modify a String", but the target audience for this question may well not know this.)
处理字符串操作的一种方法是 Apache commons 中的 StringUtils。
您可以在此处找到它。
commons-lang 包含更多内容并且得到很好的支持。
One way to handle String manipulations is StringUtils from Apache commons.
You can find it here.
commons-lang includes lots more and is well supported.
replaceAll("\\s", "")
怎么样。请参阅此处。How about
replaceAll("\\s", "")
. Refer here.您应该使用
而不是:
这样,它将在每个字符串之间有多个空格的情况下工作。
上述正则表达式中的 + 号表示“一个或多个 \s”
--\s = 任何空格字符(包括空格、制表符等)。为什么这里需要 s+?
You should use
instead of:
This way, it will work with more than one spaces between each string.
The + sign in the above regex means "one or more \s"
--\s = Anything that is a space character (including space, tab characters etc). Why do we need s+ here?
如果您还需要删除不可破坏的空格,您可以像这样升级您的代码:
If you need to remove unbreakable spaces too, you can upgrade your code like this :
如果您更喜欢实用程序类而不是正则表达式,那么有一个方法 trimAllWhitespace(String) 。
If you prefer utility classes to regexes, there is a method trimAllWhitespace(String) in StringUtils in the Spring Framework.
您已经从 Gursel Koca 那里得到了正确的答案,但我相信这很可能不是您真正想要做的。改为解析键值怎么样?
You've already got the correct answer from Gursel Koca but I believe that there's a good chance that this is not what you really want to do. How about parsing the key-values instead?
最简单的方法是使用
commons-lang3
库的org.apache.commons.lang3.StringUtils
类,例如“commons-lang3-3.1 .jar
”例如。在输入字符串上使用静态方法“
StringUtils.deleteWhitespace(String str)
”删除所有空格后,它会返回一个字符串。我尝试了您的示例字符串“name=johnage=13year=2001
”&它返回的正是您想要的字符串 - “name=johnage=13year=2001
”。希望这有帮助。The easiest way to do this is by using the
org.apache.commons.lang3.StringUtils
class ofcommons-lang3
library such as "commons-lang3-3.1.jar
" for example.Use the static method "
StringUtils.deleteWhitespace(String str)
" on your input string & it will return you a string after removing all the white spaces from it. I tried your example string "name=john age=13 year=2001
" & it returned me exactly the string that you wanted - "name=johnage=13year=2001
". Hope this helps.你可以简单地做到这一点
You can do it so simply by
我正在尝试一个聚合答案,其中测试了删除字符串中所有空格的所有方法。
每种方法运行 100 万次,然后取平均值。注意:一些计算将用于总结所有运行。
结果:
@jahir 的回答
第二名
第三名
第四名
这是代码:
这是测试:
I am trying an aggregation answer where I test all ways of removing all whitespaces in a string.
Each method is ran 1 million times and then then the average is taken. Note: Some compute will be used on summing up all the runs.
Results:
1st place from @jahir 's answer
2nd place
3rd place
4th place
Here is the code:
Here are the tests:
第一个有空间,第二个没有空间。
然后就完成了。
First with space, second without space.
Then it is done.
//它适用于任何空格
*不要忘记b中的空格
//it work fine with any spaces
*don't forget space in sting b
使用 mysz.replaceAll("\\s+","");
Use
mysz.replaceAll("\\s+","");
在 Kotlin 中使用
st.replaceAll("\\s+","")
时,请确保将"\\s+"
用 < em>正则表达式:When using
st.replaceAll("\\s+","")
in Kotlin, make sure you wrap"\\s+"
with Regex:\W
表示“非单词字符”。空白字符的模式是\s
。 模式 javadoc。\W
means "non word character". The pattern for whitespace characters is\s
. This is well documented in the Pattern javadoc.在java中,我们可以执行以下操作:
为此,您需要将以下包导入到您的程序中:
我希望它会对您有所帮助。
In java we can do following operation:
for this you need to import following packages to your program:
i hope it will help you.
使用模式和匹配器它更加动态。
Using Pattern And Matcher it is more Dynamic.
使用 apache string util 类最好避免 NullPointerException
Output
Use apache string util class is better to avoid NullPointerException
Output
要删除示例中的空格,这是另一种方法:
它的作用是将其转换为一个数组,并以空格作为分隔符,然后将数组中的项目组合在一起,不使用空格。
它工作得很好而且很容易理解。
To remove spaces in your example, this is another way to do it:
What this does is it converts it into an array with the spaces being the separators, and then it combines the items in the array together without the spaces.
It works pretty well and is easy to understand.
有很多方法可以解决这个问题。
您可以使用字符串的拆分函数或替换函数。
有关更多信息,请参阅 smilliar 问题 http ://techno-terminal.blogspot.in/2015/10/how-to-remove-spaces-from-given-string.html
there are many ways to solve this problem.
you can use split function or replace function of Strings.
for more info refer smilliar problem http://techno-terminal.blogspot.in/2015/10/how-to-remove-spaces-from-given-string.html
可以使用字符类中的 isWhitespace 函数删除空白。
White space can remove using isWhitespace function from Character Class.
字符串中也存在其他空格字符。因此我们可能需要从字符串中替换空格字符。
例如:不间断空格、三个空格、标点符号空格
这是空格字符列表 http ://jkorpela.fi/chars/spaces.html
所以我们需要修改
\u2004 us 为三个空格
s.replaceAll("[\u0020\u2004]","")
There are others space char too exists in strings.. So space char we may need to replace from strings.
Ex: NO-BREAK SPACE, THREE-PER-EM SPACE, PUNCTUATION SPACE
Here is the list of space char http://jkorpela.fi/chars/spaces.html
So we need to modify
\u2004 us for THREE-PER-EM SPACE
s.replaceAll("[\u0020\u2004]","")
使用 hutool 的 StrUtil.cleanBlank(CharSequence str)
use StrUtil.cleanBlank(CharSequence str) by hutool
将每组文本分成自己的子字符串,然后连接这些子字符串:
Separate each group of text into its own substring and then concatenate those substrings:
这可能会有所帮助。
This might help.