[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 的帮助!
我有一个代码可以将 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 的帮助!