java - Java 编辑器软件
问题描述
我正在使用 java 创建一个编辑器,其中我的查找和替换选项在我用 java 替换 c++ 时失败,然后在替换我的代码后显示 java++ 它不会完全替换 ++ 到文本文件中。
所以这是我在代码中使用 patcher 和 matcher 创建的查找方法
public void findingValue1() {
p = Pattern.compile(p.quote(tf1.getText()));
m = p.matcher(tavalue);
if (m.find(x)) {
y = 0;
char ch[] = tavalue.toCharArray();
for (int i = 0; i < m.start(); i++)
if (ch[i] == '\n')
y++;
ta.select(m.start() - y, m.end() - y);
r1 = m.start() - y;
r2 = m.end() - y;
x = m.end();
user = true;
} else
cannotFound();
f1.toFront();
}
public void findingValue2() {
try {
s1 = ta.getText();
s1 = s1.replaceAll("\r", "");
ta.setText(s1);
ta.setCaretPosition(pos);
p = Pattern.compile(tf2.getText());
m = p.matcher(s1);
if (m.find(pos)) {
ta.requestFocus();
ta.select(m.start(), m.end());
String str1, str2;
str1 = tf3.getText();
str2 = tf2.getText();
if (str1.length() > str2.length())
pos = m.end() + 1;
else
pos = m.start() + 1;
} else
cannotFound();
} catch (Exception ex) {
cannotFound();
}
}
我知道这不是提问的正确方式,但我的代码非常庞大。
谁能解释为什么会这样?
解决方案
这个 ...
p=Pattern.compile(tf2.getText());
... 使用输入的文本tf2
是正则表达式来匹配。该+
字符是正则表达式中具有特殊含义的几个字符之一。如果您想将用户输入视为文字文本,无论它包含什么字符,那么您需要引用它或以其他方式表示。例如,
p = Pattern.compile(Pattern.quote(tf2.getText()));
推荐阅读
- django - /basic_app/register/ 处的 ValueError
- sas - 将日期列转换为正确的 sas 日期并创建年/月列,从这个日期 11FEB13:22:59:00 创建年列
- chromecast - chromecast 接收器中的 cast.framework.media.ShakaPlayer 问题,同时从基于 Web 的发送器播放 DRM 内容
- javascript - 如何根据存储在另一个 reducer 中的另一个值,从 reducer 获取 key 状态的动态值?反应/还原
- kubernetes - 当 heketi 端点与 pv 和 PVC 不在同一个命名空间时,glusterfs 如何创建卷
- python - 从字符列表中查找可能的单词而不使用字符两次
- android - viewPager 回调中的片段
- openpyxl - 如何解决 Openpyxl TypeError:预期
openpyxl-3.0.3 中的错误 - node.js - 发送除 GET 以外的 http 请求时无响应或无状态码
- uikit - SwiftUI 有没有更好的方法来删除 NavigationView 上的背景