为了账号安全,请及时绑定邮箱和手机立即绑定

句子中大写不同颜色的单词

句子中大写不同颜色的单词

隔江千里 2021-09-15 16:54:57
默认情况下,我试图将聊天数据包中发送的所有单词着色为蓝色,但如果句子中的任何单词是大写的(只是单词的第一个字母)(第一个单词除外),我想将其着色为lime green。我是 Java 的初学者,但这是我目前想到的。问题是它仍然设置任何单词 blue 的颜色,无论它是否大写。public void sendChatPacket(String s, int id) {    boolean isUpperCase = Character.isUpperCase(s.length());    s = isUpperCase ? "<col=65280>\" + s + \"</col>" : "<col=255>\" + s + \"</col>";}public void showInformation(Player player) {    sendChatPacket("I can start this quest by speaking to Hetty", 8147);    sendChatPacket("who is in Rimmington.", 8148);}任何帮助表示赞赏,谢谢!
查看完整描述

3 回答

?
收到一只叮咚

TA贡献1821条经验 获得超4个赞

不确定您要在这里做什么,但是您分配给的任何s内容都不会对调用者生效:


public void sendChatPacket(String s, int id) {

    boolean isUpperCase = Character.isUpperCase(s.length());

    s = isUpperCase ? "<col=65280>\" + s + \"</col>" : "<col=255>\" + s + \"</col>";

}

Java中方法参数是按值传递的。即使您分配s给其他东西,调用者传递的参数也不会受到影响。


在你的调用者中,你也没有对传入的消息做任何事情。所以你的代码根本没有做任何有意义的事情。


如果这不是您的真实代码,请提供演示问题的代码。告诉我们预期的结果是什么以及您的示例代码如何不满足您的期望。


下次您提问时的一点建议:您在这里提供了太多不相关的上下文。比如这个题,你应该自己做过诊断,应该发现调用了之后sendChatPacket,结果出乎意料。您无需告诉我们任何颜色。您只是在操作一个字符串,而字符串操作并没有按预期工作。通过简化场景,您可以提供一个 MVCE,使人们更容易理解您的问题(因此,提供帮助)


查看完整回答
反对 回复 2021-09-15
?
胡子哥哥

TA贡献1825条经验 获得超6个赞

您是初学者,但请下次您提出问题时,请花更长的时间来解释您的目标......


以下代码将为以大写字母开头的单词选择第一种颜色,为所有其他单词选择第二种颜色


if (s != null && s.length() > 0) {

            StringBuilder result = new StringBuilder(s.length() * 2);

            result.append("<col=255>");

            String[] split = s.split(" ");

            for (String t : split) {

                boolean isUpperCase = Character.isUpperCase(t.charAt(0));

                if (isUpperCase)

                    result.append("<col=65280> " + t + "</col>");

                else

                    result.append(" "+t);

            }

            result.append("</col>");

            s = result.toString();

        }

如果您正在打印纯 html,这将起作用...


无论如何,我强烈建议在进入复杂的事情之前先从基础开始......


查看完整回答
反对 回复 2021-09-15
  • 3 回答
  • 0 关注
  • 150 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信