2011-11-16 269 views
0
String text= "2011-11-19T00:00:00.000-05:00"; 

我有上述字符串。如何删除特定位置的字符串内的冒号

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

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

您可以使用正则表达式或日期的功能。日期函数将是一个明智的选择。 – lc2817

回答

2

因为它在你的字符串结肠的最后出现,你可以做这样的事情:

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

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

0

的方法之一是使用字符串API得到该字符的最后一个索引':'

int lastIndexOf(int ch) 

一旦你有了,你可以删除该索引处的元素。

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

0

那么在这种情况下,您可以使用String.lastIndexOf(int)并获取字符串中最后一个“:”的位置。

1

您还可以使用正则表达式与先行回顾后用一个空字符串替换冒号。这样你就可以确定删除了正确的冒号。

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(""); 
    ... 

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

2

正则表达式对于这样的操作是矫枉过正的。学习基本的字符串操作是一项重要技能,通常会导致更高效的代码。

我的例子比最高评分的答案更清洁(甚至更有效,但它是一种边际收益)。

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

lastIndexOf()

substring(int)

substring(int,int)

+1

这不是一个答案,它只是代码。没有解释,它对维基贡献不足。请改善或删除它。 – markus

+0

对于这样的问题,代码不仅仅是解释性的。看看给出的其他答案,随附的文字几乎没有增加任何价值。 – Kylos

+0

但也许我应该解释为什么我的例子优于其他答案。 首先,正则表达式对于这样的操作是过度的。学习基本的字符串操作是一项重要技能,通常会导致更高效的代码。 此外,对于不了解lastIndexOf的人,说“使用lastIndexOf”可能不是问题的充分答案。 最后,我的例子比最高评分答案更清洁(甚至更有效,但它是一种边际收益)。 – Kylos

相关问题