String text= "2011-11-19T00:00:00.000-05:00";
我有上面的字符串。
由于上述日期不是RFC格式,我想在05:00删除字符串中的冒号 所以实际的字符串看起来像
String text= "2011-11-19T00:00:00.000-0500";
答案 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);
答案 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;在你的字符串中。