将字符串解析为不同的变量类型

时间:2017-06-17 12:02:15

标签: java string parsing variables

这里的编程比较新,所以如果这是相当基本的话我会道歉。

我正在尝试将字符串行转换为不同类型的实际变量。 我的输入是以下格式的文件:

 double d1, d2 = 3.14, d3;
 int a, b = 17, c, g;
 global int gInt = 1;
 final int fInt = 2;
 String s1, s2 = "Still with me?", s3;

此时这些行都是字符串。我希望从字符串中提取变量并接收实际变量,以便我可以使用和操作它们。

到目前为止,我尝试使用正则表达式,但我在这里磕磕绊绊。我们会喜欢这方面的可能性。 我想过制作一般类型格式,例如:

 public class IntType{
      boolean finalFlag;
      boolean globalFlag;
      String variableName;

      IntType(String variableName, boolean finalFlag, boolean globalFlag){
      this.finalflag = finalFlag;
      this.globalFlag = globalFlag;
      this.variableName = variableName;
      }
 }

为每个变量类型创建一个新的包装器。

通过使用和操作,我想在我创建的包装器之间进行比较,并检查重复的声明等等。

但我不知道我是否走在正确的道路上。

注意:忽略不良格式(即没有&#34 ;;"最后等等)

2 个答案:

答案 0 :(得分:1)

虽然其他人说这是不可能的,但实际上是这样。然而,它有点深入Java。只需搜索java dynamic classloading即可。例如这里: Method to dynamically load java class files

它允许您在运行时动态加载java文件。但是,您当前的输入看起来不像java文件,但可以通过使用小包装类包装它来轻松转换为一个文件:

public class CodeWrapper() {
    // Insert code from file here
}

在将ressource作为类加载之前,您可以通过简单的文件或文本操作来完成此操作。

加载课程后,您可以通过reflection访问其变量,例如

Field[] fields = myClassObject.getClass().getFields();

这允许您访问可见性修饰符,变量类型,名称,内容等。

当然这种方法假设你的代码实际上是有效的java代码。 如果不是,并且您正在尝试确认是否,则可以尝试加载它。如果失败,则无效。

答案 1 :(得分:0)

我没有使用Java的经验,但据我所知,实际上不可能使用任何语言的文件创建变量。您将需要创建某种列表对象,该对象可以容纳特定类型的可变数量的项目。然后,您可以从文件中读取值,将它们解析为您想要的类型,然后将其保存到相应类型的列表中。

编辑:

如果我是你,我会尽可能改变我的档案布局。它看起来像这样:

1 2 3 4 //1 int, 2 floats, 3 booleans and 4 strings
53
3.14
2.8272
true
false
false
#etc.

在伪代码中,您将按如下方式阅读:

string[] input = file.Readline().split(' ');    // Read the first line and split on the space character
int[] integers = new int[int.Parse(input[0])]   // initialise an array with specefied elements
 // Make an array for floats and booleans and strings the same way
while(not file.eof) // While you have not reached the end of the file
{
     integers.insert(int.Parse(file.ReadLine())) // parse your values according to the size which was given on the first line of the file
}

如果无法更改文件布局,则必须进行一些智能字符串拆分以从文件中提取值,然后创建某种动态数组,并在向其添加更多值时调整其大小。

更多编辑:

根据您的评论:

您首先想要拆分'='字符。从分割的前半部分开始,您需要搜索一个类型,从下半部分开始,您可以再次分析','以查找所有值。