String str = "khk<q>998</q>kj7<q>888</q>kj";
有这样一个字符串 ,我想要截取多个q标签中间的内容,要怎么写
package b;
import org.apache.commons.lang.StringUtils;
public class SplitString {
public static void main(String[] args) {
// TODO Auto-generated method stub
String str = "khk<q>998</q>kj7<q>888</q>kj";
String[] s=str.split("<q>");//先以<q>标签截取
for (int i = 0; i < s.length; i++) {
if(s[i].contains("</q>")){//判断是否含有</q>结束标签
String ss=StringUtils.substringBefore(s[i],"</q>");
//以上StringUtils是在org.apache.commons.lang.StringUtils中;在网上找个就行了
System.out.println(ss);
}//兄弟,只能帮你到这里了,方法肯定不是最好的但是思路是最简单的
}
}
}
用java里面的split(String)方法截取字符串,了解下
用正则表达式split
String a = "khk<q>998</q>kj7<q>888</q>kj";
String[] z = a.split("<q>(.+)?</q>");
for (String x : z) {
System.out.printf("%s\n", x);
}
这样试一下
String str = "khk998
kj7888
kj";
String[] s = str.split("<q>");
for (int i = 0; i < s.length; i++)
{
int strEndIndex = s[i].indexOf("</q>");
/* index 为负数 即表示该字符串中 没有该字符 */
if (strEndIndex < 0)
{
continue;
}
else
{
String result = s[i].substring(0, strEndIndex);
System.out.println(result);
}
}
}
System.out.println("khk<q>998</q>kj7<q>888</q>kj".replaceAll("\\w+<q>(\\w+)</q>\\w+<q>(\\w+)</q>\\w+", "$1,$2"));
str..replaceAll("","").replaceAll("
","")
System.out.println("khk<q>998</q>kj7<q>888</q>kj".replaceAll("\\w+(<q>\\w+</q>)\\w+(<q>\\w+</q>)\\w+", "$1$2"));
//结果是这样的:<q>998</q><q>888</q>
String regex="<q.*?>(.*?)</q>";
Pattern p =Pattern.compile(regex);
String str = "khk<q>998</q>kj7<q>888</q>kj";
Matcher m=p.matcher(str);
while(m.find()){
System.out.println(m.group(1));
}
List list = new ArrayList();
while(str.indexOf("") != -1){
") + 5)
list.add(str.substring(str.indexOf("" + 3), str.indexOf("
")));
if(str.length() > str.indexOf("
str = str.substring(str.indexOf("") + 4);
else break;
}
正则表达式:
public static void getInQ() {
String s = "khk<q>998</q>kj7<q>888</q>kj";
//如果不是数字,可以改成(.+?)
Pattern pattern = Pattern.compile("<q>(\\d+)</q>");
Matcher matcher = pattern.matcher(s);
List<String> values = new ArrayList<String>();
while (matcher.find()) {
values.add(matcher.group(1));
}
System.out.println(values);
}
希望可以帮到你....
split()+正则表达式来进行截取
String[] substringsBetween = StringUtils.substringsBetween("khk998
kj7888
kj", "", "
");
有个工具包,org.apache.commons.lang3.StringUtils;
String[] substringsBetween = StringUtils.substringsBetween("khk998
kj7888
kj", "", "
");
String a = "khk998
kj7888
kj";
String[] z = a.split("(.+)?
");
for (String x : z) {
System.out.printf("%s\n", x);
}
该死的浏览器,,,String[] substringsBetween = StringUtils.substringsBetween("testString", "arg1", "arg2");
Pattern pattern = Pattern.compile("
(.*)
");Pattern pattern = Pattern.compile("(\d+)
");
public static void getInQ() {
String s = "khk998
kj7888
kj";
//如果不是数字,可以改成(.+?)
Pattern pattern = Pattern.compile("(\d+)
");
Matcher matcher = pattern.matcher(s);
List values = new ArrayList();
while (matcher.find()) {
values.add(matcher.group(1));
}
System.out.println(values);
}
public static void getInQ() {
String s = "khk998
kj7888
kj";
//如果不是数字,可以改成(.+?)
Pattern pattern = Pattern.compile("(\d+)
");
Matcher matcher = pattern.matcher(s);
List values = new ArrayList();
while (matcher.find()) {
values.add(matcher.group(1));
}
System.out.println(values);
}
直接用正则表达式呀。
用split()不行,通用的话还是需要使用正则表达式,下面是示例代码:
String str = "khk998
kj7888
kj";
String regex = "(.*?)
";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.match(str);
while (matcher.find())
System.out.println(matcher.group(1));
输出结果:
998
888
亲测。
split()函数应该可以
通过StringUtils提供的方法
使用StringUtils
如:StringUtils.substringBefore(“dskeabcee”, “e”);
结果是:dsk
这里是以第一个”e”,为标准。
StringUtils.substringBeforeLast(“dskeabcee”, “e”)
结果为:dskeabce
这里以最后一个“e”为准。
使用str.split("");生成一个数组,取出数组里的值就行了