使用下划线分隔Java中的字符串作为分隔符

我有以下字符串(字符串的格式是通用的)

abc_2012-10-18-05-37-23_prasad_hv_Complete 

我想只提取prasad_hv 。 我该怎么做?

这不是我想要执行此操作的唯一字符串,因此该字符串的任何特定内容(例如,检查’prasad_hv’)都无济于事。

我尝试使用split作为分隔符,但它分别拆分prasadhv 。 请帮忙!

PS来概括,字符串将遵循格式

 string_-----__ 

即使你想要的字符串中有许多下划线字符,这也可以工作。

 str.substring(str.indexOf("_", str.indexOf("_") + 1) + 1, str.lastIndexOf("_")); 

你说

字符串的格式是通用的。

然后在拆分后将元素与索引2和3连接起来:

 String str = "abc_2012-10-18-05-37-23_prasad_hv_Complete"; String[] parts = str.split("_"); String extractedResult = ""; if(parts.length > 3) extractedResult = parts[2] + "_" + parts[3]; // prasad_hv is captured here. 

你可以这样做

 String token[] = myString().split("_"); String resultString = ""; for(int a=0; a 

在每种情况下, resultString都是您想要的字符串

您可以使用正则表达式来提取数据:

 String input = "abc_2012-10-18-05-37-23_prasad_hv_Complete"; String output = input.replaceAll("(?i)^[az]+_[^_]+_(\\w+)_[az]+$", "$1"); 

如果您确切知道它们的位置并且您确定位置是恒定的,可以尝试再次附加字符串。

我理解你的问题是你希望第3个元素到第(n-1)个字符串被“_”拆分为原样(其中n是分割后形成的数组的长度)。 所以,代码将是这样的:

 import java.util.Arrays; public class StringSplit { public static final String test = "abc_2012-10-18-05-37-23_prasad_hv_Complete"; public static void main(String args[]){ String[] data = test.split("_"); System.out.println(Arrays.toString(data)); String aim = data[2]; for(int i=3;i 

您还可以使用正则表达式。 这将产生类似的结果:

 Pattern pattern = Pattern.compile(".*[0-9]_(.*)_Complete"); Matcher matcher = pattern.matcher("abc_2012-10-18-05-37-23_prasad_hv_Complete"); matcher.find(); String group = matcher.toMatchResult().group(1);