Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从给定字符串中获取子字符串?_Java_String - Fatal编程技术网

Java 如何从给定字符串中获取子字符串?

Java 如何从给定字符串中获取子字符串?,java,string,Java,String,我使用类将整个xml文件作为单个字符串读取 String result=<?xml version="1.0"?><catalog><book id="bk101"><part1><date>Fri Apr 05 11:46:46 IST 2013</date><author>Gambardella, Matthew</author><title>XML Developer's Guide

我使用类将整个xml文件作为单个字符串读取

String result=<?xml version="1.0"?><catalog><book id="bk101"><part1><date>Fri Apr 05 11:46:46 IST 2013</date><author>Gambardella, Matthew</author><title>XML Developer's Guide</title><genre>Computer</genre><price>44.95</price>         <publish_date>2000-10-01</publish_date></part1></book></catalog>
String result=Fri Apr 05 11:46:46 IST 2013Gambardella,MatthewXML开发者指南计算机44.95 2000-10-01
现在我想替换日期值。首先我想从字符串中提取日期并替换新值。我有以下代码

  Date date=new Date()
  String str=result.substring(result.indexOf("<date>"));
Date-Date=新日期()
String str=result.substring(result.indexOf(“”));
它显示从日期标记到结束标记的整个字符串。 如何提取日期标记并替换它?

String str=result.substring(result.indexOf(“”),result.indexOf(“”+“”.length());
String str=result.substring(result.indexOf("<date>") ,result.indexOf("</date>")+"</date>".length());

返回作为此字符串的子字符串的新字符串。子串 从指定索引处的字符开始,并扩展到 这个字符串的结尾

字符串#子字符串(int beginIndex,int endIndex)

返回作为此字符串的子字符串的新字符串。子串 从指定的beginIndex开始,并延伸到 索引endIndex-1。因此,子字符串的长度是 endIndex beginIndex

只是价值:

String str = result.substring(result.indexOf("<date>") + "<date>".length(),
        result.indexOf("</date>"));
String str=result.substring(result.indexOf(“”+“”.length(),
结果。索引为(“”);
包括标签:

String str = result.substring(result.indexOf("<date>"),
        result.indexOf("</date>") + "</date>".length());
String str=result.substring(result.indexOf(“”),
result.indexOf(“”+“”.length());

这里使用regex获取标记的内容。。。至于更换,我会给你回复的

String result = "<?xml version=\"1.0\"?><catalog><book id=\"bk101\"><part1><date>Fri Apr 05 11:46:46 IST 2013</date><author>Gambardella, Matthew</author><title>XML Developer's Guide</title><genre>Computer</genre><price>44.95</price>         <publish_date>2000-10-01</publish_date></part1></book></catalog>";
String pattern = ".*(?i)(<date.*?>)(.+?)(</date>).*";
System.out.println(result.replaceAll(pattern, "$2"));
String result=“Fri Apr 05 11:46:46 IST 2013Gambardella,MatthewXML开发者指南Computer44.95 2000-10-01”;
字符串模式=“.*i)(.+?)()*”;
System.out.println(result.replaceAll(模式,$2));

干杯

编辑:哦,你想要java版的。这是C#解决方案=)

您可以通过替换包括标记在内的整个日期来解决此问题

XML中有两个日期,因此为了确保不会同时替换这两个日期,可以这样做

int index1 = result.IndexOf("<date>");
int index2 = result.IndexOf("</date>") - index1 + "</date>".Length;
var stringToReplace = result.Substring(index1, index2);

var newResult = result.Replace(stringToReplace, "<date>" + "The Date that you want to insert" + "</date>");
int index1=result.IndexOf(“”);
int index2=result.IndexOf(“”-index1+“”.Length;
var stringToReplace=result.Substring(index1,index2);
var newResult=result.Replace(stringToReplace,“+”要插入“+”的日期);

为什么不使用内置的XML解析API?String str=result.substring(result.indexOf(“”),result.indexOf(“”);你可以用正则表达式hi@ronnk,因为你是新来的。如果你建议人们使用正则表达式来解析XML或HTML,StackOverflow的愤怒就会降临到你的头上。这几乎从来都不是正确的方式。谢谢Joe,我会:)谢谢,但它会显示Fri Apr 05 11:46:46 IST 2013<。我认为需要将此格式提取为Fri Apr 05 11:46:46 IST 2013。