怎么在一个长字符串里,找到指定的字符?

charlesxu 2013-01-30 11:43:23
字符串是下面这样的:
<fieldInfo><fieldChName>人名</fieldChName><fieldEnName>Name</fieldEnName><fieldContent>张三</fieldContent></fieldInfo>
<fieldInfo><fieldChName>地址</fieldChName><fieldEnName>Address</fieldEnName><fieldContent>北京</fieldContent></fieldInfo>


我想找到“地址”那一行里,fieldContent标签中的“北京”?
...全文
218 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
Candylibin 2013-01-30
  • 打赏
  • 举报
回复
给LZ写了一个解析XML的类,根据节点获取属性值就可以了
import java.io.*;
import javax.xml.parsers.*;
import org.w3c.dom.*;
import org.xml.sax.SAXException;

public class ReadXml {
	
	public static void main(String[] args) throws SAXException {
		// TODO Auto-generated method stub
		// 文件路径
		String path = "C:\\chinese.xml";
		new ReadXml().readXml(path);
	}

	public void readXml(String filePath) throws SAXException {
		DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
		DocumentBuilder db = null;
		try {
			db = dbf.newDocumentBuilder();
		} catch (ParserConfigurationException pce) {
			System.err.println(pce); // 出异常时输出异常信息,然后退出,下同
			System.exit(1);
		}
		Document doc = null;
		try {
			doc = db.parse(filePath);
		} catch (DOMException dom) {
			System.err.println(dom.getMessage());
			System.exit(1);
		} catch (IOException ioe) {
			System.err.println(ioe);
			System.exit(1);
		}
		Element root = doc.getDocumentElement();

		NodeList chars = root.getElementsByTagName("CountryRegion");
		for (int i = 0; i < chars.getLength(); i++) {
			
			Element element = (Element) chars.item(i);
			// 根据节点获取每一个节点的属性
			System.out.println(element.getAttribute("Name").toString());
		}
	}
}
hushoubo 2013-01-30
  • 打赏
  • 举报
回复
不是有现成的XML解析类么
ZZZ5512536 2013-01-30
  • 打赏
  • 举报
回复
解析xml就行了
笑莫问 2013-01-30
  • 打赏
  • 举报
回复
确定是字符串吗? 这个结构应该是读取XML比较好 ++
Danvie 2013-01-30
  • 打赏
  • 举报
回复
1、如果是String字符串:可以用String 的split方法,把多个记录行分成数组的形式,然后再读取数组中的每个String的值,首先判断filedname后面的值是否为地址,然后再得到fieldContent的Index,从而得到后面的值。大概思路就是如此了。 2、如果是xml文件,你看看dom解析吧,根据节点值判断,可以得到,看看API,就会了
hechuanchuan 2013-01-30
  • 打赏
  • 举报
回复
确定是字符串吗? 这个结构应该是读取XML比较好
失落夏天 2013-01-30
  • 打赏
  • 举报
回复

//正则提取
	public static List<String> getContext2() {
		String html="kk<p>123456</p>ssss";
        List<String> resultList = new ArrayList<String>();
        Pattern p = Pattern.compile("<p>([^</p>]*)");//匹配<p>开头,</p>结尾的文档
        Matcher m = p.matcher(html );//开始编译
        while (m.find()) {
            resultList.add(m.group(1));//获取被匹配的部分
        }
        return resultList;
    }
截取的<p>改成你的那个 然后处理返回的list就可以了
若鱼1919 2013-01-30
  • 打赏
  • 举报
回复


public static void main(String[] args) throws Exception {
		String str = "<fieldInfo><fieldChName>人名</fieldChName><fieldEnName>Name</fieldEnName><fieldContent>张三</fieldContent></fieldInfo><fieldInfo><fieldChName>地址</fieldChName><fieldEnName>Address</fieldEnName><fieldContent>北京</fieldContent></fieldInfo>";
		System.out.println(getAddress(str));
	}
	public static String getAddress(String src){
		int offset = 0;
		while(offset < src.length()){
			int fieldInfoStart = src.indexOf("<fieldInfo>",offset);
			int fieldInfoEnd  = src.indexOf("</fieldInfo>",offset);
			offset += fieldInfoEnd+"</fieldInfo>".length();
			if(fieldInfoStart <= -1 || fieldInfoEnd <= -1){
				break;
			}
			String fieldInfo = src.substring(fieldInfoStart,fieldInfoEnd);
			int fieldEnNameStart = fieldInfo.indexOf("<fieldEnName>");
			int fieldEnNameEnd = fieldInfo.indexOf("</fieldEnName>");
			if(fieldEnNameStart <=-1 || fieldEnNameEnd<=-1){
				break;
			}
			String fieldEnName = fieldInfo.substring(fieldEnNameStart+"<fieldEnName>".length(),fieldEnNameEnd);
			int fieldContentStart = fieldInfo.indexOf("<fieldContent>");
			int fieldContentEnd = fieldInfo.indexOf("</fieldContent>");
			if(fieldContentStart <=-1 || fieldContentEnd <= -1){
				break;
			}
			String fieldContent = fieldInfo.substring(fieldContentStart+"<fieldContent>".length(),fieldContentEnd);
			if(fieldEnName.equals("Address")){
				return fieldContent;
			}
		}
		return "";
	}
KingSen_Yale 2013-01-30
  • 打赏
  • 举报
回复
写成XML 文件吧。 然后解析XML文件,更容易操作。
charlesxu 2013-01-30
  • 打赏
  • 举报
回复
能不能用正则表达式取下值?逻辑判断有点复杂
charlesxu 2013-01-30
  • 打赏
  • 举报
回复
这就是字符串,以后会最为xml处理。 但是现在,我就想把它作为string处理。还有谁能给个思路吗?怎么简单点处理这个字符串?

62,614

社区成员

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

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