【问题标题】:Android Search in string and "Trim"Android 搜索字符串和“修剪”
【发布时间】:2014-01-22 13:35:53
【问题描述】:

所以我得到了一个巨大的字符串,我开始搜索

"<div style=\"font-size:15px;\"><b>"

"</b></div>"

就像这样:(它实际上是一个 IF 语句。)

htmlCode.contains("<div style=\"font-size:15px;\"><b>") 
&& htmlCode.contains("</b></div>")

无论如何,在第一个"&lt;div style=\"font-size:15px;\"&gt;&lt;b&gt;" 之后是文本,在文本之后是第二个。 ("&lt;/b&gt;&lt;/div&gt;")

现在,我想“获取”那段文本,并最终删除到其他文本,只保留“中间文本”。

我找了好久,没找到解决办法。

如果你能给我发一个文档链接,或者一个例子,那就太好了。

额外信息:

   /*
    * 1. Search for "<div style="font-size:15px;"><b>" ** TITLE COMES HERE **
    * 2. Search for "</b></div>" ** This is after the Title, so Title is between 1 and 2.
    * 3. Search for "<div style="float:left;"><a href="" ** Link Comes Here **
    * 4. Search for "" rel="nofollow" target="_blank" style="color:green;">" ** Same as 2. // Link Instead ** 
    * 
    * -- How it should do it --
    * 1 -> Wait -> 2 -> Wait -> Get the text between 1 and 2 -> Save in String (Array) -> 3 -> Wait -> 4 -> Wait
    * -> Get the text between 3 and 4 -> Save in String (Array) -> Repeat Process (Max 25(?)).
    */

完整字符串的示例如下:

<div style="font-size:15px;"><b>**My Little Pony.**</b></div>

(加星标的文字是我想要得到的)

提前致谢!

【问题讨论】:

    标签: java android string trim


    【解决方案1】:

    你需要找到第一个片段的索引htmlCode.indexOf(""),并使用htmlCode.substring(int start, int length)来找到片段之间的文本。

    int index1 = htmlCode.indexOf("<div style=\"font-size:15px;\"><b>");
    int index2 = htmlCode.indexOf("</b></div>");
    
    String textInsideDiv = htmlCode.substring(index1+"<div style=\"font-size:15px;\"><b>".length(), index2);
    

    【讨论】:

    • 首先,感谢您的回复.. 那究竟是如何工作的?我的意思是,我的字符串字符数超过 1.000,另外,我不知道指定字符串的起始偏移量。即使我不认为这很重要,它不会一直持续到整个字符串的末尾而不是我的第二根字符串吗?有没有办法做到这一点?
    • 完美。非常感谢!我一直在脑子里把事情弄得更复杂..没想到会这么容易!
    • 很高兴知道这对您有所帮助。
    【解决方案2】:

    你应该使用java正则表达式,看这里:

    http://www.vogella.com/tutorials/JavaRegularExpressions/article.html

    6.4。构建链接检查器

    以下是进行此类提取的示例

    import java.util.*;
    import java.lang.*;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    class Rextester
    {  
        public static void main(String args[])
        {
          Pattern  htmltag = Pattern.compile("<div style=\"font-size:15px;\"><b>(.*?)</b></div>");
          String subjectString =             "<div style=\"font-size:15px;\"><b>**My Little Pony.**</b></div>";
          Matcher tagmatch = htmltag.matcher(subjectString);
          while (tagmatch.find()) {
            System.out.println(tagmatch.group(1));
          }
        }
    }
    

    【讨论】:

    • 哇,我想我会花一夜的时间来阅读它。我喜欢它的完成方式。 Altho,有没有更简单的方法来获取两部分之间的文本?无论如何都要为答案 +1
    • 您可以使用indexOf 手动解析它,但您只会重现正则表达式会做得更好并且可能更快的内容。
    猜你喜欢
    • 1970-01-01
    • 2018-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-08
    相关资源
    最近更新 更多