我计划使用regex在java中拆分一个字符串。我的输入如下
2010-11-10 00:00:00,999,一些字符串如下
我在用
inputString.split("(\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2},\\d{3},)");这给出了一个包含两个元素的string[],第二个元素是“string后”,但是第一个元素是空字符串,如何获得字符串的第一部分。
更新:我不能假设日期将在开始。抱歉,刚才忘了。
发布于 2010-11-10 19:47:06
你可能不想分开。Split的参数是字符串之间的分隔符。因此,您成功地匹配了时间戳,但是split是在该时间戳之前(空)和后面(“一些字符串后面”)返回字符串。
你可能想
Matcher m = Pattern.compile("(\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2},\\d{3},)")
.matcher("2010-11-10 00:00:00,999, some string follows");
if (m.find()) {
String first_part = m.group(1);
}(未经测试!)
发布于 2010-11-10 19:44:30
为什么不使用SimpleDateFormat来解析专为此任务设计的日期部分呢?
例如:
DateFormat fmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss,SSS");
Date date = fmt.parse("2010-11-10 00:00:00,999");要获取输入字符串的这一部分,您可以找到逗号的第二个匹配项,并返回它前面的所有内容:
String input = "2010-11-10 00:00:00,999, yada yada";
String dateInput = input.substring(0, input.indexOf(',', input.indexOf(',') + 1));或者使用regex方法(使用正向后断言来确保它是第二个逗号):
String dateInput = input.split("(?<=.*,.*),")[0];发布于 2010-11-10 19:45:47
为什么不搜索第二个逗号并手动将字符串拆分为两个?对我来说,做这么简单的任务似乎太复杂了。当然,假设格式总是完全相同的话,这是可行的。
https://stackoverflow.com/questions/4148387
复制相似问题