【问题标题】:Is there any equivalent to String.strip() in androidandroid中是否有任何等价于String.strip()
【发布时间】:2022-01-15 02:57:48
【问题描述】:

除了trim()之外,android中有没有等价的String.strip()?

我的开发环境是Java11、minSdk24、targetSdk31和compileSdk31。如果我升级其中一个,是否可以使 String.strip() 可用?

【问题讨论】:

  • 例如String stripped = test.replaceAll("(?:^\\p{Z}+)|(?:\\p{Z}+$)", ""); 为你工作?不是很好,但至少是单线。从here“窃取”...
  • 不要使用正则表达式,性能会慢几个数量级。更不用说正则表达式在您编写它们的第二天基本上是不可维护和不可理解的。一般来说,如果有正则表达式和非正则表达式解决方案,请使用非正则表达式。

标签: android


【解决方案1】:

您可以尝试升级您的项目以使用具有该功能的 Java 11。还是自己写吧,小菜一碟。

public static String strip(String value) {
    int firstChar = 0;
    while (firstChar < value.length() && Character.isWhitespace(value.charAt(firstChar))) {
        firstChar++;
    }
    int lastChar = value.length() - 1;
    while (lastChar > firstChar && Character.isWhitespace(value.charAt(lastChar))) {
        lastChar--;
    }
    return value.substring(firstChar, lastChar + 1);
}

【讨论】:

  • 否,如果 lastChar==firstChar,则表示字符串中有 1 个值字符。想象一下字符串“a”。你会以 firstChar = 0, lastChar = 0 结束。你会想要返回“a”。 firstChar > lastChar 表示没有找到非空白字符。但是请随意编写一个实际的测试用例并仔细检查我,我只是临时编写了代码,实际上并没有编写测试套件。
  • 我测试了一些案例,效果很好,谢谢
猜你喜欢
  • 2019-11-24
  • 2015-05-19
  • 1970-01-01
  • 1970-01-01
  • 2013-02-18
  • 2018-07-06
  • 1970-01-01
  • 2021-08-04
  • 2011-07-14
相关资源
最近更新 更多