如何在特定位置删除字符串内的冒号

时间:2011-11-16 15:33:27

标签: java

String text= "2011-11-19T00:00:00.000-05:00";

我有上面的字符串。

由于上述日期不是RFC格式,我想在05:00删除字符串中的冒号 所以实际的字符串看起来像

String text= "2011-11-19T00:00:00.000-0500";

5 个答案:

答案 0 :(得分:2)

由于它是字符串中最后一次冒号,你可以这样做:

String newText = text.substring(0, text.lastIndexOf(":")) + text.substring(text.lastIndexOf(":") + 1);

这将创建一个没有最后一次冒号的新字符串。

答案 1 :(得分:2)

正则表达式对此类操作来说太过分了。学习基本的字符串操作是一项重要的技能,通常会带来更高效的代码。

我的例子比最高等级的答案更清洁(甚至更有效,虽然这是一个边际收益)。

int remove = text.lastIndexOf(':');
text = text.substring(0,remove) + text.substring(remove+1);

lastIndexOf()

substring(int)

substring(int,int)

答案 2 :(得分:1)

您还可以使用带有 lookahead lookbehind 的正则表达式将冒号替换为空字符串。这样你就可以确定删除了正确的冒号。

import java.util.regex.Matcher;
import java.util.regex.Pattern;

    ...
    String text= "2011-11-19T00:00:00.000-05:00";
    Pattern p = Pattern.compile("(?<=\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}-\\d{2}):(?=\\d{2})");
    Matcher m = p.matcher(text);
    String newtext = m.replaceAll("");
    ...

如果您要更改较大文本块中的日期格式,这可能是一个不错的选择。

答案 3 :(得分:0)

一种方法是使用String API来获取字符':'

的最后一个索引
 int    lastIndexOf(int ch) 

完成后,您可以删除该索引处的元素。

例如,可能有一种更简单的方法可以通过正则表达式删除它。这只是一种方式。

答案 4 :(得分:0)

在这种特殊情况下,您可以使用String.lastIndexOf(int)并获取最后一个&#34;的位置:&#34;在你的字符串中。