[英]Splitting a String in Java with underscore as delimiter
我有以下字符串(此字符串的格式是通用的)
abc_2012-10-18-05-37-23_prasad_hv_Complete
我只想提取prasad_hv
。 我该怎么办?
这不是我要在其上执行此操作的唯一字符串,因此,对该字符串特定的任何操作(例如,检查“ prasad_hv”)都无济于事。
我尝试使用_
作为分隔符使用split,但是它将分开prasad
和hv
。 请帮忙!
PS进行概括,字符串将遵循以下格式
string_<digit>-<digit>-<digit>-<digit>-<digit>-<digit>_<String with underscores>_<String>
你说
字符串的这种格式是通用的。
然后在拆分后用索引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.
即使您想要的字符串中有许多下划线字符,这也将起作用。
str.substring(str.indexOf("_", str.indexOf("_") + 1) + 1, str.lastIndexOf("_"));
你可以这样
String token[] = myString().split("_");
String resultString = "";
for(int a=0; a<token.length-1 ;a++){
if(a == token.length-2)
resultString = resultString+token[a]
else
resultString = resultString+token[a]+"_";
}
在每种情况下, resultString
都是您想要的字符串
您可以使用正则表达式提取数据:
String input = "abc_2012-10-18-05-37-23_prasad_hv_Complete";
String output = input.replaceAll("(?i)^[a-z]+_[^_]+_(\\w+)_[a-z]+$", "$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<data.length-1;i++){
aim+="_"+data[i];
}
System.out.println(aim);
}
}
您也可以使用正则表达式。 这将导致如下结果:
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);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.