swing界面获取的textArea.getText() 在fun类中实现获取这个数据,对这个数据进行判断,如果满足规则集合中的规则就把数据变成*,原数据放到map集合里,规则1:有连续11位数字,规则2:有连续24位数字,规则3:有账户这两个字。三个规则在一个集合里,函数传入的是界面数据和规则集合并且实现还原函数。
时间: 2024-02-01 19:15:41 浏览: 111
好的,实现这个功能可以按照以下步骤进行:
1. 定义一个函数 `checkTextArea`,将界面数据和规则集合作为参数传入。
2. 在函数中,首先获取界面的文本内容 `text`,可以通过 `textArea.getText()` 方法来实现。
3. 定义一个空的 `Map<String, String>` 集合 `map`,用于存放原数据。
4. 遍历规则集合,对于每个规则,进行相应的判断。如果满足规则,则将文本中符合规则的部分替换成 * 号,并将原数据放入 `map` 集合中。
5. 最后返回处理后的文本和 `map` 集合,可以使用一个 `Result` 实体类来封装这两个返回值。
代码实现如下所示:
```java
public Result checkTextArea(String text, List<String> rules) {
Map<String, String> map = new HashMap<>();
for (String rule : rules) {
if (rule.equals("rule1")) {
// 判断是否有连续11位数字
Pattern pattern = Pattern.compile("\\d{11}");
Matcher matcher = pattern.matcher(text);
while (matcher.find()) {
String match = matcher.group();
text = text.replace(match, "***********");
map.put(match, matcher.group());
}
} else if (rule.equals("rule2")) {
// 判断是否有连续24位数字
Pattern pattern = Pattern.compile("\\d{24}");
Matcher matcher = pattern.matcher(text);
while (matcher.find()) {
String match = matcher.group();
text = text.replace(match, "************************");
map.put(match, matcher.group());
}
} else if (rule.equals("rule3")) {
// 判断是否有账户这两个字
Pattern pattern = Pattern.compile("账户");
Matcher matcher = pattern.matcher(text);
while (matcher.find()) {
String match = matcher.group();
text = text.replace(match, "**");
map.put(match, matcher.group());
}
}
}
return new Result(text, map);
}
public class Result {
private String text;
private Map<String, String> map;
public Result(String text, Map<String, String> map) {
this.text = text;
this.map = map;
}
// getter and setter
}
```
还原函数可以按照以下步骤进行:
1. 定义一个函数 `restoreData`,将处理后的文本和 `map` 集合作为参数传入。
2. 遍历 `map` 集合,将处理后的文本中的 * 号替换成 `map` 集合中对应的原数据。
3. 返回还原后的文本。
代码实现如下所示:
```java
public String restoreData(String text, Map<String, String> map) {
for (Map.Entry<String, String> entry : map.entrySet()) {
text = text.replace("***********", entry.getValue());
text = text.replace("************************", entry.getValue());
text = text.replace("**", entry.getValue());
}
return text;
}
```
阅读全文