[Java]如何从 java name.properties 文件中读取变量名和字符串

[Java]How to read name of variable and string from java name.properties file

我有一个代码可以将 String+variable+string 保存到 .properties 文件 但它将它保存为字符串,当我再次加载它进行编程时,该变量不再是变量了——它只是一个字符串。

如何做到这一点 -> 加载字符串+变量+字符串并将其加载到我的 java 代码表单文件中的一个变量中 name.properties?

String userNickname = api.getClientInfo(movedevent.getClientId()).getNickname();
String Text="[i]Welcome [/i][color=red][b]" + userNickname+ "[/b][/color][i] on channel";


Properties prop = new Properties();
    try {
prop.setProperty("Text", Textregister);

            File f = new File("server.properties");
            if(!f.exists()){
            PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(new FileOutputStream(f, false), "UTF-8")), true);

            prop.store(out, "Autoconfig");
            }





        } catch (Exception io) {
            io.printStackTrace();
        } 

然后载入程序

 InputStream input = null;

            try {


                BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream("server.properties"), "UTF8"));
                // load a properties file
                prop.load(in);

                // get the property value and print it out
                Text= prop.getProperty("Textregister");
} catch (IOException ex) {
                ex.printStackTrace();
            } finally {
                if (input != null) {
                    try {
                        input.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }

我收到 欢迎 " + userNickname+ " 在频道上"

但我想欢迎 我的昵称 在频道上

有人可以帮忙吗?

如果您想在 运行 时替换名称,您可以将文本保存为:

"[i]Welcome [/i][color=red][b] {USER-NAME} [/b][/color][i] on channel"

然后,在读取属性后,您将在变量 Text 中拥有此字符串,因此您可以搜索并将其替换为登录的用户:

String userNickname = api.getClientInfo(movedevent.getClientId()).getNickname();
Text.replaceAll("{USER-NAME}", userNickname);

注意:replaceAll 的第一个参数是一个正则表达式。也许必须用双反斜杠转义“{”和“}”。我没测试。

这行不通

String userNickname = api.getClientInfo(movedevent.getClientId()).getNickname();
Text.replaceAll("{USER-NAME}", userNickname);

但是在我将其放入 String 变量并接下来在我的代码中对其进行更改后 - 它起作用了

String userNickname = api.getClientInfo(movedevent.getClientId()).getNickname();
String variable = Text.replaceAll("\{USER-NAME\}", userNickname);

非常感谢 Juan 的帮助!