Bukkit修剪不起作用

时间:2015-10-01 02:46:46

标签: java bukkit

由于某些奇怪的原因,当我尝试修剪“替换:”时,由于某些奇怪的原因,它不会被修剪。就像它的一部分被修剪一样,取决于列入黑名单的字符有多少,但整体上它没有按预期工作。

它假设要做的是将“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("_", " "));
    }
}


}

1 个答案:

答案 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);
    }

}