java - 在没有 trim() 和 replaceAll() 的情况下删除字符串中的连续空格

标签 java string

我必须从给定的字符串中删除前导和尾随空格,并合并连续的空格。例如,

String str = "    this is    a   string  containing numerous  whitespaces   ";

我需要将其归还为:

"this is a string containing numerous whitespaces";

但问题是我不能使用 String#trim()。 (这是一项作业,不允许我使用此类方法。)我目前正在通过逐个访问每个字符来尝试,但很不成功。

我需要为此优化代码。有人可以帮忙吗?我需要它在今天之前完成:(

最佳答案

编辑:在我们被告知不能使用 replaceAll 之前发布了答案。我把它留在这里是因为它可能对其他读者有用,即使它对 OP 没有用。

I need an optimized code for this.

真的需要优化它吗?您是否将此确定为瓶颈?

应该这样做:

str = str.replaceAll("\\s+", " ");

这是一个正则表达式,表示“用单个空格替换任何连续的空格”。它可能不是最快的,但我会在尝试其他任何东西之前对其进行基准测试。

请注意,这会将 所有 空格替换为空格 - 因此如果您有制表符或其他空格字符,它们也将替换为空格。

关于java - 在没有 trim() 和 replaceAll() 的情况下删除字符串中的连续空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15849204/

相关文章:

java - java线程中的"notifyAll()": unexpected waiting time

java - 使用 JAVA 等效的 OpenSSL 命令

c# - 按索引/参数拆分的字符串?

r - 时间转换为数字

java - 如何跳过java中while循环的最后一次迭代?

java - 用Java计算平均数

c - 无法找出我的代码中的逻辑错误

java - 从 ArrayList 中删除字符串

c# - IndexOf() 与 Replace() 和零宽度非连接器

java - 使用 StAX 验证数字签名