シンプルなIDEを作成し、JTextPaneに基づいて色を付けようとしています
- 文字列 (" ")
- コメント (// および /* */)
- キーワード (public、int ...)
- 数値 (69 のような整数と 1.5 のような浮動小数点数)
ソース コードに色を付ける方法は、StyledDocument 内の insertString メソッドと removeString メソッドを上書きすることです。
多くのテストの後、コメントとキーワードを完成させました。
Q1: 文字列の色付けに関しては、次の正規表現に基づいて文字列に色を付けています。
Pattern strings = Pattern.compile("\"[^\"]*\"");
Matcher matcherS = strings.matcher(text);
while (matcherS.find()) {
setCharacterAttributes(matcherS.start(), matcherS.end() - matcherS.start(), red, false);
}
これは、コード内に "\ がある特定の種類の文字列が文字列に含まれている場合を除き、99% の時間で機能します。これにより、カラー コーディング全体が台無しになります。正規表現を修正してエラーを修正できますか?
Q2: Integers と Decimal の色付けについては、次の正規表現に基づいて数値が検出されます。
Pattern numbers = Pattern.compile("\\d+");
Matcher matcherN = numbers.matcher(text);
while (matcherN.find()) {
setCharacterAttributes(matcherN.start(), matcherN.end() - matcherN.start(), magenta, false);
}
正規表現 "\d+" を使用することで、浮動小数点数ではなく整数のみを処理しています。また、別の文字列の一部である整数が一致しますが、これは IDE 内で必要なものではありません。整数の色分けに使用する正しい式はどれですか?
以下は、出力のスクリーンショットです。
事前に助けてくれてありがとう!