如何取回使用 .trim 删除的所有原始前导和尾随空格? [复制]

Posted

技术标签:

【中文标题】如何取回使用 .trim 删除的所有原始前导和尾随空格? [复制]【英文标题】:How do I get back all the original leading and trailing spaces I removed from using .trim? [duplicate] 【发布时间】:2018-10-02 02:21:43 【问题描述】:

我把一个字符串变成了.trim()。我想尝试扭转它,但我似乎做不到。

例如,

String a = "    apple     ";

我做到了,a = a.trim(); 这样:

assert(a == "apple");

我希望能够回到原来的填充文本。

assert( a == "    apple     ");

【问题讨论】:

如果你修剪它,空格就消失了。如果你想知道它以前是什么,那么你不应该覆盖它。我不确定这里有什么问题。 【参考方案1】:

除非你存储原始字符串并返回它,否则你不能。

String original = "    apple   ";
String backup = original;
string original = original.trim();
System.out.println(original); //this will show trimmed text
original = backup;
System.out.println(original); //this will show the original untrimmed text.

【讨论】:

【参考方案2】:

你不能“让它们回来”,但你可以在修剪它们之前记录它们。

根据Javadoc,可以找到字符串中第一个未删除字符的索引如下:

int k = 0;
while (k < string.length() && string.charAt(k) <= 0x20) 
  ++k;

现在,前导空格是字符串string.substring(0, k)

你可以用类似的方法找到最后一个未删除的字符索引(称之为m);然后尾随空格由string.substring(m+1) 给出。

既然您已经这样做了,那么使用 trim() 就没有意义了:string.substring(k, m+1) 是您的修剪后的字符串(前提是您已经处理了“字符串中的所有内容都是空白”的情况)。

【讨论】:

以上是关于如何取回使用 .trim 删除的所有原始前导和尾随空格? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

js trim()方法

删除 JSON 键中的前导和尾随空格

如何删除前导和尾随空格?

XSLT 删除所有属性的前导和尾随空格

前导和尾随空格剪切 + 中间空格替换

从字符串值中删除空格(前导和尾随)