swing界面获取的textArea.getText() 在fun类中实现获取这个数据,对这个数据进行判断,如果满足规则集合中的规则就把数据变成*,原数据放到map集合里,规则1:有连续11位数字,规则2:有连续24位数字,规则3:有账户这两个字。并且实现还原函数。
时间: 2024-02-01 15:15:34 浏览: 79
java swing-JTextArea的使用
5星 · 资源好评率100%
可以按照以下步骤来实现:
1. 在fun类中创建一个 HashMap<String, String> 类型的成员变量,用于存储被替换的数据和原始数据的对应关系。
2. 编写一个名为 `checkAndReplace` 的方法,接收一个字符串参数,用于判断该字符串是否满足规则集合中的任何一个规则。
3. 如果满足规则,则将该字符串进行替换,并将原始数据和替换后的数据存储到 HashMap 中。
4. 编写一个名为 `recover` 的方法,接收一个字符串参数,用于从 HashMap 中获取原始数据并返回。
下面是代码示例:
```java
import java.util.HashMap;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Fun {
private HashMap<String, String> map = new HashMap<>();
public void checkAndReplace(String text) {
// 规则1:有连续11位数字
Pattern pattern1 = Pattern.compile("\\d{11}");
Matcher matcher1 = pattern1.matcher(text);
if (matcher1.find()) {
String match = matcher1.group();
text = text.replace(match, "*".repeat(11));
map.put(text, match);
}
// 规则2:有连续24位数字
Pattern pattern2 = Pattern.compile("\\d{24}");
Matcher matcher2 = pattern2.matcher(text);
if (matcher2.find()) {
String match = matcher2.group();
text = text.replace(match, "*".repeat(24));
map.put(text, match);
}
// 规则3:有账户这两个字
if (text.contains("账户")) {
text = text.replace("账户", "**");
map.put(text, text.replace("**", "账户"));
}
}
public String recover(String hiddenText) {
return map.get(hiddenText);
}
}
```
在主程序中,可以这样使用:
```java
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class Main extends JFrame {
private JTextArea textArea = new JTextArea();
private Fun fun = new Fun();
public Main() {
// 创建界面
setTitle("文本处理");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(400, 400);
// 创建文本框和按钮
JPanel panel = new JPanel(new BorderLayout());
panel.add(textArea, BorderLayout.CENTER);
JButton button = new JButton("替换");
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String text = textArea.getText();
fun.checkAndReplace(text);
textArea.setText(text);
}
});
panel.add(button, BorderLayout.SOUTH);
getContentPane().add(panel);
// 显示界面
setVisible(true);
}
public static void main(String[] args) {
new Main();
}
}
```
这样,当用户在界面中输入文本并点击“替换”按钮时,程序会自动将满足规则的文本进行替换,并将原始数据和替换后的数据存储到 HashMap 中。用户可以随时调用 `recover` 方法来还原被替换的数据。
阅读全文