只需使用Pattern.html#quote(java.lang.String):
public String quote(String input) {
return Pattern.quote(input).substring(2, input.length() + 2); // quote() adds '\Q' and '\E', substring used to remove those.
}
String input = "/me eats";
String cmd = input.replaceAll(quote("/me"), /* replacement */);
现在,我假设这是一个命令系统,在这种情况下,我建议不要使用正则表达式进行解析。
通常,这是通过以下方式以更简单的方式完成的/command <arguments>...
:
public class Command {
private final String name;
private final String[] args;
public Command(String name, String... args) {
this.name = name;
this.args = args;
}
public String getName() {
return this.name;
}
public String[] getArgs() {
return this.args;
}
}
这种用法的一个例子:
String commandPrefix = "/";
String input = "/me eats";
if (input.startsWith(commandPrefix)) {
String[] raw = input.split(" ");
Command cmd = new Command(raw[0].substring(commandPrefix.length(), raw[0].length(), Arrays.copyOfRange(raw, 1, raw.length - 1);
//cmd.getName() -> "me"
//cmd.getArgs() -> ["eats"]
}
通过把它扔给决定如何执行命令的东西,你可以me
像这样简单地处理命令:
public void onCommand(Command cmd) {
StringBuilder sb = new StringBuilder();
boolean first = true;
for (String s : cmd.getArgs()) {
if (first) { first = false; } else { sb.append(" "); }
sb.append(s);
}
String action = sb.toString();
//use the "action" string in whatever 3rd person context you desire.
}