【发布时间】:2019-12-14 05:26:03
【问题描述】:
我有这个字符串:
String str = "8240d66c-4771-4fae-9631-8a420f9099ca,458,cross_vendor_certificate_will_expire,1565102543758";
我想使用正则表达式从字符串中删除纪元时间,但我没有找到合适的解决方案。 这是我到目前为止的代码:
public void createHashMapWithAlertCSVContent() throws Exception {
for(String item: lstServer) { //lstServer is a list contains names of the CSV files
String[] contentCSVStr= CmdHelper.Remote.File.cat(SERVER,INDENI_INSIGHT_PATH + "/"+item).split("\n");//Function to get CSV contents
mapServer.put(FileUtil.removeExtension(item), contentCSVStr);//Finally I add each String[] to hashmap key is the csv file name and String[] is the content of each CSV file
}
Assert.assertEquals(mapServer.size(), lstServer.size());
mapServer.remove("job");
}
可能的内容示例:
1. 0,TRIAL,8240d66c-4771-4fae-9631-8a420f9099ca,1566345600000,5,1565102549213
2. 8240d66c-4771-4fae-9631-8a420f9099ca,0,1565102673040
3. 8240d66c-4771-4fae-9631-8a420f9099ca,0.0.0.develop,4418,1565102673009
编辑: 正则表达式可能是字符串中的任何位置,并且可能在字符串中多次退出。 纪元时间字符串的长度肯定 > 10
【问题讨论】:
-
@azurefrog - 我忘了提到这是我可能拥有的字符串的示例,纪元字符串可能位于字符串中的任何位置[在中间、开头或结尾]
-
请描述您希望获得的任何输入字符串的格式,并告诉我们您打算在minimal reproducible example 中使用的代码。一个 10 多个输入字符串示例的列表也很好 :) 此外,您打算如何识别 epoch 字符串?关于逗号分隔的数字,我在字符串中看到 458 和 1565102543758。
-
您能详细说明一下吗?假设您最终要拆分字符串以提取各个元素,如果它们可以出现在任何位置(如果纪元时间在它们之前,至少偏移 1),您将如何识别它们?除此之外,正如 Avi 已经说过的:你如何区分时间戳和任何其他数字?一种方法可能是期望时间戳具有一定的长度(即,您不期望几年前的任何时间戳)并且您的其他数字不可能那么大,在 all 下是否会出现这种情况情况?
-
@Thomas 我会编辑我的问题
-
你试过什么?你的搜索结果是什么,在哪些方面是不够的?您已经为问题的措辞付出了很大的努力,但否则它可能看起来背后真的没有任何努力?