下面这个是我的字符串(所有的,不是一行),值是System.out.println()打印出来的
LV NAME TYPE LPs PPs PVs LV STATE MOUNT POINT
hd5 boot 1 1 1 closed/syncd N/A
hd6 paging 17 17 1 open/syncd N/A
hd8 jfs2log 1 1 1 open/syncd N/A
hd4 jfs2 120 120 1 open/syncd /
hd2 jfs2 20 20 1 open/syncd /usr
hd9var jfs2 8 8 1 open/syncd /var
hd3 jfs2 40 40 1 open/syncd /tmp
hd1 jfs2 40 40 1 open/syncd /home
hd10opt jfs2 40 40 1 open/syncd /opt
hd11admin jfs2 1 1 1 open/syncd /admin
现在我的问题是想要获取得到LV NAME:hd5,LV NAME:hd6 这样的数据格式的值。
请问我要怎么才能得到这样的格式呢?主要是后面的值不好获取,这个用正则表达式吗?如果是用正则表达式,我该怎么去写呢?还望知道的大神不奢指教,我先在这里谢谢了!
String string = "LV NAME TYPE LPs PPs PVs LV STATE MOUNT POINT\n" +
"hd5 boot 1 1 1 closed/syncd N/A\n" +
"hd6 paging 17 17 1 open/syncd N/A\n" +
"hd8 jfs2log 1 1 1 open/syncd N/A\n" +
"hd4 jfs2 120 120 1 open/syncd /\n" +
"hd2 jfs2 20 20 1 open/syncd /usr\n" +
"hd9var jfs2 8 8 1 open/syncd /var\n" +
"hd3 jfs2 40 40 1 open/syncd /tmp\n" +
"hd1 jfs2 40 40 1 open/syncd /home\n" +
"hd10opt jfs2 40 40 1 open/syncd /opt\n" +
"hd11admin jfs2 1 1 1 open/syncd /admin";
string = string.replaceAll("\r|\n", "##");//将换行转换成##
String name = string.replaceAll("(\\w+\\s+\\w+).+", "$1");//提取出name
System.out.println(name);//打印name
Pattern pattern = Pattern.compile("##(\\w+?\\d+)");//匹配换行后的第一列标准字符
Matcher matcher = pattern.matcher(string);
StringBuilder sb = new StringBuilder();
while(matcher.find()) {//逐个查询
sb.append(name).append(":").append(matcher.group(1)).append(",");
}
if(sb.length() > 0) System.out.println(sb.substring(0, sb.length() - 1));
看看是不是你想要的,如果不是,告诉我明确需求吧...
自己顶一下,麻烦知道的大神讲一下
startWith和endWith()方法截取字符串就行了
这个用列和行拼接就可以了,,
你自己写一个正则判断一下,可以瞬间出来的。