【问题标题】:Remove last characters from string从字符串中删除最后一个字符
【发布时间】:2017-08-19 04:01:06
【问题描述】:

我有一个从 API 调用收到的长字符串日期,它们以

的形式返回

Event Name 2017-03-23T10:00.000+01:00

我如何修剪它,以便我可以从我返回的所有事件中删除角色并只留下

Event Name 2017-03-23 10:00

【问题讨论】:

  • 结合 substring(start, end)lastIndexOf 方法。
  • 将其解析为OffsetDateTime,然后使用您选择的格式化程序输出。
  • 你可以试试str.split("\\.")[0]
  • @Pshemo 你能举个例子吗?

标签: java android string substring


【解决方案1】:

如何修剪它以便我可以从所有 我回来后只剩下的事件

活动名称 2017-03-23 10:00

试试这个:

String str = "Event Name 2017-03-23T10:00.000+01:00";
String newString = str.replace("T"," ");
System.out.println(newString.substring(0, newString.lastIndexOf(".")));

结果是 --> Event Name 2017-03-23 10:00

旁注 - 如您所见,使用 Strings 在每次构造新对象方面效率较低,您可以考虑查看 StringBuilder。但是,如果您不再进行操作,那么我已经完成了,那应该没问题。

编辑

替代解决方案

String str = "Event Name 2017-03-23T10:00.000+01:00";
System.out.println(str.split("\\.")[0]);

注意 - 这类似于上面的解决方案,但将“T”保留在当前位置。然后你可以继续做你想做的事。

【讨论】:

  • 这会删除日期和时间之间的 T,但也会删除整个字符串中所有大写 Ts 的实例。字符串末尾的日期保持不变
  • @smithcommajohn 您提供的示例没有说明不超过一个“T”,因此这就是我的解决方案的基础。所以你只想删除日期和时间之间的 T 吗?没有其他的?。尽管如此,我会提供一个替代解决方案。
  • @smithcommajohn 您的示例没有任何其他 T。请更新您的问题以显示正确的输入。解释什么可以改变,什么是固定的。
【解决方案2】:
StringBuilder sb = new StringBuilder("Event Name 2017-03-23T10:00.000+01:00");
sb.setLength(27);
System.out.println(sb.toString());

【讨论】:

  • 这个解决方案可以工作,但返回的字符串有这些事件的多个实例,我需要显示它们中的每一个,这将只返回前 26 个字符。
  • 我编辑了答案以将长度延长到 10:00 我记错了字符串
【解决方案3】:
     if (str != null && str.length() > 0 && str.charAt(str.length() - 1) == 'x') {
            str = str.substring(0, str.length() - 1);
     }

用你的最后一个字符更改x

【讨论】:

    猜你喜欢
    • 2011-01-19
    • 2021-12-11
    • 2010-11-08
    • 2011-11-18
    • 2011-08-01
    • 1970-01-01
    相关资源
    最近更新 更多