由于某些奇怪的原因,当我尝试修剪“替换:”时,由于某些奇怪的原因,它不会被修剪。就像它的一部分被修剪一样,取决于列入黑名单的字符有多少,但整体上它没有按预期工作。
它假设要做的是将“replace:”替换为“”,但不想工作。
继承我的代码:
@EventHandler public void BlackListWords(AsyncPlayerChatEvent e){ String labels =“replace:”;
for (String s : p.file.getFile().getStringList(p.file.path + ".BlacklistedWords")) {
String[] parts = labels.split(" ");
String replace = parts[0];
Bukkit.getConsoleSender().sendMessage(ChatColor.GREEN + "Words:\n" + s.replace("replace:", ""));
Bukkit.getConsoleSender().sendMessage(ChatColor.AQUA + "StringList:\n" + s.split(" ")[0]);
if (e.getMessage().equalsIgnoreCase(s.split(" ")[0])) {
e.setMessage(s.substring(replace.length()).replaceAll("//replace", "").split(" ")[0].replace("_", " "));
}
}
}
答案 0 :(得分:0)
这是一个可能有帮助的例子。阅读你的代码似乎你的文件中的字符串列表可能有一行“replace:”作为它们的前缀,然后你做了几个多余的事情尝试删除那个前缀,最后使用错误的字符串作为你的消息。看看这有助于澄清,但它是基于我假设您正在尝试做的...
import java.util.ArrayList;
import org.junit.Test;
public class StackOverflow_32878663 {
@Test
public void replaceBlacklistedWords()
{
// mimicking your list of strings from the file
ArrayList<String> wordList = new ArrayList<String>();
wordList.add("replace: blue");
wordList.add("replace: green");
wordList.add("replace: red");
wordList.add("replace: white");
wordList.add("replace: yellow");
String incomingMessage = "I am RED, white, bLuE, and green all over. What am I?";
String modifiedMessage = incomingMessage;
for (String s : wordList)
{
// one way of many to remove "replace:" if that is important
String justTheWord = s.split(" ", 2)[1];
// the (?i) tells the regex to perform in a case insensitive manner
modifiedMessage = modifiedMessage.replaceAll("(?i)" + justTheWord, " ");
}
System.out.println("Original message: " + incomingMessage);
System.out.println("Modified message: " + modifiedMessage);
}
}