我有一堆图像,其名称为nineDiamonds.gif和aceHearts.gif以及用于扑克牌面孔的“卡片”类。
在构造函数中,我想传递卡片名称的字符串,并能够创建具有正确图像的JPanel。很容易,但我希望能够传递诸如以下内容:
我知道我可以重载构造函数并使用开关匹配,但事实并非如此,但我真正追求的是优雅,功能性的解决方案,其中包括以下内容:
String fileName = name.replaceAll("magic regex") + ".gif";
谢谢!
答案 0 :(得分:2)
一个.replaceAll()
是不够的。
小写你的字符串。 (\S+)\s*(?:of)?\s*(hearts|clubs|diamonds|spades)
会将9 of hearts
和9hearts
解析为(“9”,“heart”),aceofclubs
解析(“ace”,“俱乐部”)。创建一个映射“1”到“ace”,...“13”到“king”的地图;通过它传递比赛的第一组。然后创建文件名变得微不足道。
答案 1 :(得分:1)
以下是一些可以帮助您找到有效解决方案的提示:
\bof\b
)map[9] = "nine"
)和for循环来完成)String.split()
分割字边界,然后对除第一个字以外的所有字体进行处理并重新加入所以最后,单独的正则表达式并不是最常见的解决方案。