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);
}