我正在创建一个 JTextField,它会立即将下划线后跟数字更改为下标。我需要有关replaceAll 的正则表达式代码的帮助。我已经阅读了一些关于正则表达式组的信息,但在这种情况下,我并不完全理解如何获取下划线后的数字。
下标代码:
// Only 0 - 9 for now...
private String getSubscript(int number)
{
String[] sub = {"\u2080", "\u2081","\u2082","\u2083","\u2084","\u2085","\u2086","\u2087","\u2088","\u2089" };
return sub[number];
}
插入更新代码:
public void insertUpdate(DocumentEvent e) {
if (textField.getText().contains("_"))
{
SwingUtilities.invokeLater(this);
}
}
实际替换的位置(因为您不能直接在 DocumentListener 方法中编辑文本字段:
public void run()
{
textField.setText(textField.getText().replaceAll("_([0-9])+", getSubscript(Integer.getInteger("$1"))));
}
这会在 run() 方法中引发 NullPointer 异常。
编辑:
这是一些示例输出:
用户输入“H_2”并立即变为“H₂”,然后他继续“H₂O_2”立即变为“H₂O₂”