java提取字符串

章耿(余淮) 2007-11-26 01:48:22
java提取字符串

字段如下:

[IMG height=50 src="/SYSTEM/bos/padownload.jsp?ftpPath=/upImg/9911938308140319576.gif" width=50 border=0]文字文字111111
[IMG height=55 src="/SYSTEM/bos/padownload.jsp?ftpPath=/upImg/9911938308140319577.gif" width=70 border=0]文字文字22222222222


字段如上 有多个 要求提取类似/SYSTEM/bos/padownload.jsp?ftpPath=/upImg/9911938308140319577.gif 的字段为String数组1! 提取文字为String数组2

用方法或者正则都可以 先谢谢大家了!
...全文
506 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
Lisliefor 2007-11-26
  • 打赏
  • 举报
回复
字符分析器,查API,关键字StringTokenizer
daniel_kaka 2007-11-26
  • 打赏
  • 举报
回复
正则:


public static void getRegex(){
String regex = "\\[IMG.*?src=\"(.*?)\".*?border=0\\](.*?) ";
String src = "[IMG height=50 src=\"/SYSTEM/bos/padownload.jsp?ftpPath=/upImg/9911938308140319576.gif\" width=50 border=0]文字文字111111 "+
"[IMG height=55 src=\"/SYSTEM/bos/padownload.jsp?ftpPath=/upImg/9911938308140319577.gif\" width=70 border=0]文字文字222222 ";
Pattern p = Pattern.compile(regex,Pattern.DOTALL + Pattern.MULTILINE);
Matcher m = p.matcher(src);
List<String> tmpList1 = new ArrayList<String>();
List<String> tmpList2 = new ArrayList<String>();
while (m.find()){
tmpList1.add(m.group(1));
tmpList2.add(m.group(2));
}

System.out.println(tmpList1.toString());
System.out.println(tmpList2.toString());
}


结果:
[/SYSTEM/bos/padownload.jsp?ftpPath=/upImg/9911938308140319576.gif, /SYSTEM/bos/padownload.jsp?ftpPath=/upImg/9911938308140319577.gif]
[文字文字111111, 文字文字222222]

Clesome_VC 2007-11-26
  • 打赏
  • 举报
回复
忘了加注释 ^_^

package zjq;

import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
* @author ZhaoJiqing
*
*/
public class Regex {
static final String regexStr = "src=\"[a-zA-Z0-9/.?=]+\"";
public static void main(String args[])
{
Regex r = new Regex();
String string = "[IMG height=50 src=\"/SYSTEM/bos/padownload.jsp?ftpPath"
+"=/upImg/9911938308140319576.gif\" width=50 border=0]文字文字111111 "
+"[IMG height=55 src=\"/SYSTEM/bos/padownload.jsp?ftpPath"
+"=/upImg/9911938308140319577.gif\" width=70 border=0]文字文字22222222222";
r.doRegex(Regex.regexStr,string);
}

public void doRegex(String regexString,String string)
{
Pattern pattern = Pattern.compile(regexString);
Matcher matcher = pattern.matcher(string);
System.out.println(matcher.groupCount());
List<String> strs = new ArrayList<String>();
while(matcher.find())
{
String srcStr = matcher.group(); //这里得到的是src="........"的字符串
String printStr = srcStr.substring(5,srcStr.length()-1); //去掉多余的字符src="和"
strs.add(printStr); //将匹配的结果放入List
}
String[] ss = new String[strs.size()]; //将List转换成需要的数组
strs.toArray(ss);
for(int i=0; i<ss.length; i++)
{
System.out.println(ss[i]);
}
}

}

wrm519 2007-11-26
  • 打赏
  • 举报
回复
String regEx="([\/SYSTEM\/bos\/padownload\.jsp\?ftpPath=\/upImg\/9911938308140319576\.gif])";
Pattern p=Pattern.compile(regEx);
Matcher m=p.matcher(str);
m.group(1);

正则中()代表组,m.group(n)可以提取string, []表示匹配项,需要注意特殊字符(上面的regEx可能不对,没仔细看)
可以使用工具RegexBuddy生成
Clesome_VC 2007-11-26
  • 打赏
  • 举报
回复
我写了个简单的正则

package zjq;

import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
* @author ZhaoJiqing
*
*/
public class Regex {
static final String regexStr = "src=\"[a-zA-Z0-9/.?=]+\"";
public static void main(String args[])
{
Regex r = new Regex();
String string = "[IMG height=50 src=\"/SYSTEM/bos/padownload.jsp?ftpPath"
+"=/upImg/9911938308140319576.gif\" width=50 border=0]文字文字111111 "
+"[IMG height=55 src=\"/SYSTEM/bos/padownload.jsp?ftpPath"
+"=/upImg/9911938308140319577.gif\" width=70 border=0]文字文字22222222222";
r.doRegex(Regex.regexStr,string);
}

public void doRegex(String regexString,String string)
{
Pattern pattern = Pattern.compile(regexString);
Matcher matcher = pattern.matcher(string);
System.out.println(matcher.groupCount());
List<String> strs = new ArrayList<String>();
while(matcher.find())
{
String srcStr = matcher.group();
String printStr = srcStr.substring(5,srcStr.length()-1);
strs.add(printStr);
}
String[] ss = new String[strs.size()];
strs.toArray(ss);
for(int i=0; i<ss.length; i++)
{
System.out.println(ss[i]);
}
}

}

fanql_222 2007-11-26
  • 打赏
  • 举报
回复
有高手用正则写吗?学习
seaforce 2007-11-26
  • 打赏
  • 举报
回复

/**
* project_name: Test
* package_name: CSDN_Test_20071126
* package_declaration: package CSDN_Test_20071126;
* filename: StringDisposalTest.java
* author: yuhaiming
* date: 2007-11-26
*/
package CSDN_Test_20071126;
/**
* [IMG height=50 src="/SYSTEM/bos/padownload.jsp?ftpPath=/upImg/9911938308140319576.gif" width=50 border=0]文字文字111111
[IMG height=55 src="/SYSTEM/bos/padownload.jsp?ftpPath=/upImg/9911938308140319577.gif" width=70 border=0]文字文字222222
要求提取类似/SYSTEM/bos/padownload.jsp?ftpPath=/upImg/9911938308140319577.gif 的字段为String数组1! 提取文字为String数组2
* @author yuhaiming
*
*/
public class StringDisposalTest {
/**
* 主处理
*/
public static void disposal(){
//假设两个吧,你可以将数据库中的字段取出来放到List中,再对每一个元素进行处理
String[] sourceString = {"[IMG height=50 src=\"/SYSTEM/bos/padownload.jsp?ftpPath=/upImg/9911938308140319576.gif\" width=50 border=0]文字文字111111",
"[IMG height=55 src=\"/SYSTEM/bos/padownload.jsp?ftpPath=/upImg/9911938308140319577.gif\" width=70 border=0]文字文字222222"};
String[] srcString = new String[2];
String[] charString = new String[2];
for(int i=0;i<sourceString.length;i++){
int srcStart = sourceString[i].indexOf("src=\"")+"src=\"".length();
int srcEnd = sourceString[i].substring(srcStart).indexOf(" ")+srcStart;
srcString[i]=sourceString[i].substring(srcStart,srcEnd-1);
int charStart = sourceString[i].indexOf("]", 1);
charString[i]=sourceString[i].substring(charStart+1);
}
display(srcString,"路径");
display(charString,"文字");
}
public static void display(String[] str,String att){
System.out.println(att+":");
for(int i=0;i<str.length;i++){
System.out.println(str[i]);
}

}
/**
* @param args
*/
public static void main(String[] args) {
disposal();
}

}


kekeemx 2007-11-26
  • 打赏
  • 举报
回复
这个好像是HTML页面的部分代码.如果楼主不嫌麻烦的话可以使用STRING类提供的indexof的那两个方法(参数不同的那2个)和substring等API已经
提供的方法进行拼接字符串并存入数组.但是我现在是使用的HTTPCLIENT这个第三方开源项目他提供了很方便完整的HTML页面解析方法.这样楼主的
要求可以很简单的实现,但是需要导入第三方JAR文件.而且代码就依赖于这个JAR了.所以怎么做就取决于楼主的实际情况了.
cocosunshine 2007-11-26
  • 打赏
  • 举报
回复
如果是servlet的话,你使用request.getQueryString就可以把url后面的路径,如果你要取参数的话用request.getParameter就可以了。。如果你想是字符串处理,方法有很多split,indexOf。。
fanql_222 2007-11-26
  • 打赏
  • 举报
回复
对每个字符串字段
String str = string.substring(string.indexOf("\"")+1,string.lastIndexOf("\""));

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧