如何在小于和大于之间查找文本,然后在 Java 中去除 <>?

Posted

技术标签:

【中文标题】如何在小于和大于之间查找文本,然后在 Java 中去除 <>?【英文标题】:How to find text between less and greater than, then strip the <> in Java? 【发布时间】:2016-01-01 00:59:54 【问题描述】:

我不知道如何找到这些词.. 示例我有这个文本...

The other day I went to the <location> and bought some <plural-noun> . Afterwards, I went to <location> , but it was very <adjective> so I left quickly and went to <location> .

当我在google上搜索&lt;&gt;时,我不知道要搜索什么原因,它将被忽略。需要帮助如何获取此字符串。

所以我会得到&lt;location&gt;&lt;plural-noun&gt;&lt;location&gt;&lt;adjective&gt;&lt;location&gt;

我必须使用charAt() 方法。我的尝试:

String string = this.fileName;
for(int i = 0; i < string.length(); i++)
                if((string.charAt(i) == '<') && (string.charAt(i) == '>'))
                    System.println(""); //<-------- IM STUCK HERE

我不知道……快两天没睡了。

我当前但最后一个问题...如何删除显示的每个单词上的&lt;&gt;

String string = this.template;
        Pattern pattern = Pattern.compile("<.*?>");
        Matcher matcher = pattern.matcher(string);

        List<String> listMatches = new ArrayList<String>();

        while(matcher.find()) 
            listMatches.add(matcher.group());
        
        // System.out.println(listMatches.size());
        int indexNumber = 1;
         for(String s : listMatches) 
             System.out.println(Integer.toString(indexNumber) + ". " + s);
             indexNumber++;
         

【问题讨论】:

为什么一定要使用charAt()方法?这可以使用正则表达式来解决。 @Brad 更新了新... 【参考方案1】:

您可以使用PatternMatcher 类。

    搜索正则表达式模式&lt;.*?&gt;。 使用 Matcher 查找模式。

【讨论】:

为什么不使用&lt;.+&gt; 我如何使用它来匹配它? Pattern.compile("\\[(.*?)\\]");我只想要&lt;&gt; 不处理这个...Pattern pattern = Pattern.compile("&lt;.+&gt;"); 它正在工作......你知道如何删除每个字符串上的&lt;&gt;吗? 如果你不想要尖括号,你可以尝试前瞻和后瞻。我认为正确的表达是Pattern.compile("(?&lt;=&lt;).+(?=&gt;)")【参考方案2】:

这里确实有两个问题,所以我只回答最后一个;当你有你想要的&lt;text&gt; 时,可以这样:

String text = "<the_text_you_want>";

text.replace("<","").replace(">","").replace("-"," ");

这将去掉分隔符。

【讨论】:

谢谢,你知道怎么把plural-noun改成plural noun吗? Thanks for the feedback! Once you earn a total of 15 reputation, your votes will change the publicly displayed post score. 不能投票对不起老兄......如果我达到 15 岁,我会投票【参考方案3】:

阅读整行并将其存储在String line 中。然后,使用:

String line = "The other day I went to the <location> and bought some <plural-noun> . Afterwards, I went to <location> , but it was very <adjective> so I left quickly and went to <location> ."; 

boolean found = false;
String data[] = new String[20];
int counter = 0;

Arrays.fill(data, "");

for(int i = 0; i < line.length() && counter < 20; i++) 
    if(line.charAt(i) == '<')
        found = true;
    else if(line.charAt(i) == '>' && found) 
        found = false;
        counter++;
    
    else if(found) 
        data[counter] += line.charAt(i);
    


for(int i = 0; i < counter; i++)
    System.out.println("Scanned data #" + (i + 1) + " = " + data[i]);

【讨论】:

以上是关于如何在小于和大于之间查找文本,然后在 Java 中去除 <>?的主要内容,如果未能解决你的问题,请参考以下文章

在 ASP.NET 中,如果文本在“大于”和“小于”符号之间给出,则无法保存文本框

labview中如何大于0小于4

小于等于号在电脑上怎么打?

利用python实现二分法

SQL解析值列表以查找大于/小于/范围

在二分查找中,为啥不先检查要查找的元素是不是小于或大于数组的最小或最大索引?