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

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标签中的“北京”?
...全文
189 11 打赏 收藏 举报
写回复
11 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
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处理。还有谁能给个思路吗?怎么简单点处理这个字符串?
  • 打赏
  • 举报
回复
相关推荐
课程设计-基于C++的mfc框架的学生社团管理系统(源码+数据库+报告).zip 本系统实现的功能 本程序为单文档应用程序,主程序界面能实现查询社团信息、修改社团信息、删除社团信息、添加社团信息、入团、退团、用户登录、和用户管理功能其中修改社团信息、删除社团信息、添加社团信息和用户管理需要用户登录后才能使用,未登录就点击使用的会会弹出对话框显示您还没有登录,点击登录按钮会弹出用户登录对话框输入正确的用户名称和密码若验证成功则会显示登录成功并显示出您用有的权限高级管理员或者是普通管理员,高级管理员则可以对社团信息进行修改、删除、添加。点击入团按钮会弹出加入社团对话框,对话框内填上相应的信息后点击确定成功加入后会有相关提示,若没有成功则有可能您输入的社团不存,点击退团按钮弹出退出社团对话框,输入您要退出的社团名称和学号点击确定如果成功退出会显示成功的标志,否则的话就是您没有假如该社团活着您填的信息不完全。主程序对话框中可以直接控件内输入要修改的社团信息,然后点击修改按钮,分别输入控件中的内容然后点击添加按钮,若要添加的社团当前没有的话则添加成功,否则会失败。登录了以后点击用户管理按钮则会弹出用户管理对话框,该对话框内可以修改用户密码,高级管理员还能注册新用户。
发帖
Java SE
加入

6.2w+

社区成员

Java 2 Standard Edition
社区管理员
  • Java SE
申请成为版主
帖子事件
创建了帖子
2013-01-30 11:43
社区公告
暂无公告