我有一堆带有奇怪名字的字符串(比如这个docFileeh934fhry),其中包含这样的文字
System.out.println(docFileeh934fhry);
`.............document: 12345.....
...................
...............`
我想重命名这些字符串。这样上面的字符串就是String doc12345
我该怎么做?
我知道如何使用Pattern.compile
假设我有这个号码String docNumber = "12345";
现在我该如何动态创建新字符串?
我试过
String doc+docNumber = docFileeh934fhry;
//没有结果
答案 0 :(得分:6)
你可以用反射来做到这一点,但必须说这是一种非常糟糕的方法。
您对变量的命名不应取决于任何外部输入。相反,给它一个描述其内容的名称并从那里开始。
通过命名doc1
获得了什么?
如果您正在循环使用文件,那么您可能想要的只是currentDocument
。您根据函数命名的任何其他变量(firstDocument
,nextDocument
,oldDocument
等),而不是其内容。
如果您想要一种唯一标识正确文档的方法,请改为创建一个类
class Document {
int id;
string contents;
}
将所有这些Document
对象存储到集合中(如ArrayList
)后,您只需根据该ID检索所需的文档,而不必将一堆生成的内容弄乱变量
还有一点要注意:当你有50个文件时,你甚至会怎么用? 100? 10.000?这是不可能维持的。
如果您不想创建自定义课程,可以使用HashMap<Integer, String>
路线。
答案 1 :(得分:4)
这不是Java的工作原理。如果要将对象与String关联,请使用Map,例如HashMap<String, String>
。
答案 2 :(得分:3)
将字符串分配给带有新名称的变量。请注意,在编写代码时必须已经定义了新名称,它不能即时计算(如果这是你正在驾驶的那个)。
您不能在变量名中使用+
。如上所述,您无法动态创建变量名称。
答案 3 :(得分:3)
这里可能是一个可能的解决方案,使用Hashmap,key是你的varname(你想要的方式),value是你的字符串。