2014-12-05 284 views
-1

代碼:應該返回true,但返回false?

Bukkit.getServer().broadcastMessage("Check " + ChatColor.stripColor(i)); 
Bukkit.getServer().broadcastMessage("That it starts with " + ChatColor.stripColor(ChatColor.translateAlternateColorCodes('&',  GUIShop.instance.getConfig().getString("Messages." + type + "Label")))); 
Bukkit.getServer().broadcastMessage(ChatColor.stripColor(i).startsWith(ChatColor.stripColor(ChatColor.translateAlternateColorCodes('&', GUIShop.instance.getConfig().getString("Messages." + type + "Label")))) + ""); 

而且它的圖像返回假,而不是真正: enter image description here

可能我太傻了..不知道

EDIT1:好了,所以拜eckes他指出,我當時很愚蠢......我如何檢查「購買:50.0」是否以「購買:價格」開頭。如果高達%價格%

+0

223行對於單行非常長,您應該考慮將它分成幾行。 – August 2014-12-05 21:56:36

+0

'stripColor'確實聽起來像一個可變的操作。不知道Bukkit的任何API,你確定這個調用不會改變狀態嗎? – Makoto 2014-12-05 21:59:45

+0

https://github.com/Bukkit/Bukkit/blob/master/src/main/java/org/bukkit/ChatColor.java#L187回覆@Makoto – user3448331 2014-12-05 22:02:40

回答

0

錯誤是正確的,「Buy: 50.0」不以「Buy: %price%」開頭。而且您應該不會將顏色邏輯與翻譯邏輯與業務邏輯混合。

讓你的代碼可讀,它通常有助於你自己找到問題。

如果你想刪除%的價格%你可以使用:

String check = ChatColor.stripColor(i); 
String pattern = ChatColor.stripColor(ChatColor.translateAlternateColorCodes('&', 
        GUIShop.instance.getConfig().getString("Messages." + type + "Label"))); 
pattern = pattern.replace(" %price%", ""); 
boolean isBuy = check.startsWith(pattern); 

我不能讓它變得沒有更多的背景細節更加易讀。

+1

我結束了使用split方法,不知道是哪一個最好的,但感謝您的幫助! – user3448331 2014-12-05 22:10:02

+0

在這種情況下,我刪除了一個固定的字符串,你可能想要解析爲空或%或類似。 – eckes 2014-12-05 22:10:34

相關問題