String获取<h3>到第下一个<h3>直接的字符
时间: 2023-10-25 08:09:53 浏览: 35
可以使用正则表达式来实现这个需求。以下是一种可能的实现方式:
```java
String input = "<h3>这是标题1</h3>这是正文1<h3>这是标题2</h3>这是正文2";
String pattern = "<h3>(.*?)</h3>"; // 匹配 <h3> 到 </h3> 之间的任意字符,非贪婪模式
Pattern r = Pattern.compile(pattern);
Matcher m = r.matcher(input);
int startPos = 0;
while (m.find()) {
int endPos = m.start();
String content = input.substring(startPos, endPos);
System.out.println(content);
startPos = m.end();
}
String content = input.substring(startPos);
System.out.println(content);
```
输出结果为:
```
这是正文1
这是正文2
```
这段代码将输入字符串中所有 `<h3>` 到下一个 `<h3>` 之间的内容提取出来,并输出。
相关问题
String test="<h3>1</h3><h4>1</h4>,<h3>2</h3><h4>1</h4>,<h3>3</h3><h4>1</h4>";使用java获取<h3>到下一个<h3>之间的字符
可以使用正则表达式来匹配<h3>和下一个<h3>之间的字符,具体代码如下:
```java
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Test {
public static void main(String[] args) {
String test = "<h3>1</h3><h4>1</h4>,<h3>2</h3><h4>1</h4>,<h3>3</h3><h4>1</h4>";
Pattern pattern = Pattern.compile("<h3>(.*?)</h3>(.*?)<h3>");
Matcher matcher = pattern.matcher(test);
while (matcher.find()) {
String result = matcher.group(2);
System.out.println(result);
}
}
}
```
输出结果为:
```
<h4>1</h4>,
<h4>1</h4>,
<h4>1</h4>
```
其中,正则表达式`<h3>(.*?)</h3>(.*?)<h3>`表示匹配`<h3>`和`</h3>`之间的任意字符,以及两个`<h3>`之间的任意字符。在代码中,使用`Pattern`类和`Matcher`类来进行正则表达式的匹配,使用`while`循环来依次输出匹配到的结果。
在前端使用uniapp 渲染map<String,List<String>>类型的数据
在 uni-app 中,你可以使用 `v-for` 指令来渲染 `Map` 类型的数据。以下是一个示例代码:
```html
<template>
<div>
<div v-for="(value, key) in data" :key="key">
<h3>{{ key }}</h3>
<ul>
<li v-for="(item, index) in value" :key="index">{{ item }}</li>
</ul>
</div>
</div>
</template>
<script>
export default {
data() {
return {
data: new Map([
['key1', ['value1', 'value2']],
['key2', ['value3', 'value4']]
])
}
}
}
</script>
```
在这个示例中,我们使用 `v-for` 指令来遍历 `data` 对象。我们首先使用 `v-for="(value, key) in data"` 遍历每个键值对,然后在内部使用 `v-for="(item, index) in value"` 遍历每个列表中的项。
在每个循环中,我们使用 `key` 和 `value` 分别表示键和值,然后使用 `:key` 绑定 `key` 变量作为唯一的 `key` 属性。
希望这可以帮助你解决问题。