Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.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 如何为每行字符串应用foreach循环_Java_Loops_Foreach_Iteration - Fatal编程技术网

Java 如何为每行字符串应用foreach循环

Java 如何为每行字符串应用foreach循环,java,loops,foreach,iteration,Java,Loops,Foreach,Iteration,我有一个字符串: <li>Coffee</li> <li>Tea</li> <li>Milk</li> <li>Milk</li> <li>Milk</li> <li>Milk</li> <li>Milk last</li> 咖啡 茶 牛奶 牛奶 牛奶 牛奶 牛奶末 我想对所有li标记进行交互(以便

我有一个字符串:

  <li>Coffee</li>
  <li>Tea</li>
  <li>Milk</li>
  <li>Milk</li>
  <li>Milk</li>
  <li>Milk</li>
  <li>Milk last</li>
  • 咖啡
  • 牛奶
  • 牛奶
  • 牛奶
  • 牛奶
  • 牛奶末
  • 我想对所有li标记进行交互(以便在标记之间添加一些文本):

    for(字符c:innerText.toCharArray()){
    
    如果(c==”用于解析HTML文本或解析XML字符串。则可以将解析后的值传递给for each循环。

    如果不想使用解析器,可以使用正则表达式进行解析,如下所示:

    String regex = "<li>((?:\\w|\\s)+)</li>";
    String list = "..."; //your list
    
    Matcher m = Pattern.compile(regex).matcher(list);
    
    while (m.find()) 
    {
        String ofInterest = m.group(1);
        //doSomething
    }
    
    Coffee
    Tea
    Milk
    Milk
    Milk
    Milk
    Milk last
    
    String regex=“
  • ((?:\\w|\\s)+)
  • ”; String list=“…”;//您的列表 Matcher m=Pattern.compile(regex).Matcher(list); while(m.find()) { 兴趣字符串=m.group(1); //剂量 }
    ((?:\\w|\\s)+)
    是一个捕获组,它从
    [a-Za-z_0-9]
    或任何空格中获取字符,其中
    +
    表示必须至少有一个字符。如果中间不能有字符,则使用
    *


    m.group(1)
    只提取
  • 之间的内容,其中
    1
    响应第一个捕获组

    <>你可以用你认为有效的任何东西来替换捕捉组里面的东西。 这里有一个关于的教程。祝你好运!

    试试这个

    String str ="<li>Coffee</li><li>Tea</li><li>Milk</li><li>Milk</li><li>Milk</li><li>Milk</li><li>Milk last</li>";
        String[] temp =str.replaceAll("</li>", "").split("<li>");
        String result ="";
        for (String value: temp){
            result = result + "<li>";
            // update the value here if needed
            result = result + value;        
            result = result+ "<li>";
        }
    
    
         System.out.println(result);
    
    String str=“
  • 咖啡
  • 牛奶
  • 牛奶
  • 牛奶
  • 牛奶
  • 牛奶
  • ”; 字符串[]temp=str.replaceAll(“
  • ”,”).split(“
  • ”); 字符串结果=”; for(字符串值:temp){ 结果=结果+“
  • ”; //如果需要,请在此处更新该值 结果=结果+值; 结果=结果+“
  • ”; } 系统输出打印项次(结果);
  • 试试:


    它显示您正在解析一些html元素, jsoup是伟大的java html解析器之一


    由于OP希望
    在标签之间添加一些文本
    我建议他使用jquery而不是服务器端解决方案

    $( "li" ).each(function( index ) {
      str = $(this).text();
      $(this).text(str + " Other text");
     });
    

    请尝试使用以下代码:

    String text = "<li>Coffee</li><li>Tea</li><li>Milk</li><li>Milk</li><li>Milk</li><li>Milk</li><li>Milk last</li>";
        text = text.replaceAll("</li>", "");
        String[] results = text.split("<li>");
        // The first one is empty, remove it
        for (int i = 1; i < results.length; i++) {
            System.out.println(results[i]);
        }
    

    这一切都可以在一条线上完成:

    for (String option : innerText.replaceAll("^.*?<li>|</li>.*?$", "").split("</li>\\s*<li>")) {
       System.out.println(option);
    }
    
    for(字符串选项:innerText.replaceAll(“^.*?”*?$”).split(“\\s*
  • ”){ System.out.println(选项); }
  • 你也想要内容还是标签?这是HTML吗?处理可以在客户端完成吗?是的,它是简单的HTML,是一个独立的应用程序。是的,你说得对,但我不想从一些框架中使用,我想最大限度地利用Java;-)谢谢大家,stackoverflow很棒!!!@MrPhi很高兴我能帮上忙。如果你还不知道正则表达式,我强烈建议你阅读本教程。它们对很多任务都很有帮助。祝你好运!确切地说,我在文本处理方面有问题,我不知道什么时候使用DOM,什么时候使用SAX,什么时候使用正则表达式,有很多可能性很容易在所有问题中迷失方向。这个问题只是需要解决的更大问题的一部分,因为现在多亏了问答,我找到了一条我应该走的路。再次感谢你们所有人!你们能给我一个提示吗?你们的解决方案是否是解决我主要问题的最佳方案:?@Phi先生,我快要晕过去了,不确定是不是因为我太累了ed或not,但我不完全确定你的另一个问题是什么。OP是什么?谢谢,但它是独立的app.OP=原始海报的缩写。用于在线留言板和论坛。
    String text = "<li>Coffee</li><li>Tea</li><li>Milk</li><li>Milk</li><li>Milk</li><li>Milk</li><li>Milk last</li>";
        text = text.replaceAll("</li>", "");
        String[] results = text.split("<li>");
        // The first one is empty, remove it
        for (int i = 1; i < results.length; i++) {
            System.out.println(results[i]);
        }
    
    Coffee
    Tea
    Milk
    Milk
    Milk
    Milk
    Milk last
    
    for (String option : innerText.replaceAll("^.*?<li>|</li>.*?$", "").split("</li>\\s*<li>")) {
       System.out.println(option);
    }