操纵用户的输入

时间:2011-12-20 19:49:02

标签: java

所以我试图以这样的方式操纵用户的输入:当我在输入中找到某个字符串时,我将其转换为变量并用变量名替换字符串。 (我知道的混乱的解释,也许一个例子会让它更清楚)。

     public class Test {

        static List<String> refMap = new ArrayList<String>();

        public static void main(String[] args) {
            String x = "PROPERTY_X";
            String y = "PROPERTY_Y";
            refMap.add(x);
            refMap.add(y);
            String z = "getInteger("PROPERTY_X)";
            String text = "q=PROPERTY_X+10/(200*PROPERTY_X)";
            String text1 = "if(PROPERTY_X==10){"
                    + "j=1;"
                    + "PROPERTY_X=5; "
                    + "if(true){"
                    + "m=4/PROPERTY_X"
                    + "}"
                    + "}"; 
            detectEquals(text);
        }

        public static String detectEquals(String text) {
            String a = null;
            text = TestSplitting.addDelimiters(text);
            String[] newString = text.split("  ");
            List<String> test = Arrays.asList(newString);

            StringBuilder strBuilder = new StringBuilder();
            HashMap<String, Integer> signs = new HashMap<String, Integer>();
            HashMap<String, Integer> references = new HashMap<String, Integer>();
            List<String> referencesList = new ArrayList<String>();
            List<Integer> indexList = new ArrayList<Integer>();
            int index = 0;

            for (int i = 0; i < test.size(); i++) {
                a = test.get(i).trim();
                //System.out.println("a= " + a);
                strBuilder.append(a);

                index = strBuilder.length() - a.length();
                if (a.equals("=")) {
                    signs.put(a, index);
                    indexList.add(index);

                    // System.out.println("signs map--> : "+signs.get(a));
                }
                if (refMap .contains(a)) {
                    references.put(a, index); 
    //               System.out.println("reference index-> "+references.get(a));
                    // System.out.println("reference-> "+references.toString());

                }
            }
//stuck here
                for (String s : references.keySet()) {
                    //System.out.println("references-> " + s);
                    int position = references.get(s);
                    for (int j : indexList) {
                        if (j <= position) {
                            System.out.println(j);
                        }
                    }

                //strBuilder.insert(j - 1, "temp1=\r\n");
            }
            System.out.println(strBuilder);


return a;
    }

假设用户输入字符串“text”的内容,我正在尝试解析该输入,所以当我找到“PROPERTY_X”时,我想从中创建一个变量并将其放在文本出现之前,然后将“PROPERTY_X”替换为新创建的变量的名称。

我也在搜索“=”符号的原因是因为我只想在整个输入中第一次出现“PROPERTY_X”时执行上述操作,然后只需将“PROPERTY_X”替换为“{1}}”否则我找到“PROPERTY_X”。

前:

tempVar1

随着用户输入变得越来越复杂,事情变得越来越复杂,但目前我只是尝试为我创建的第一个输入示例做正确的事情,然后从那里接受它:)。

正如你所看到的,我对逻辑部分有点困惑,我采用它的方式是: 我在字符串中找到所有“=”符号(当我转到更复杂的输入时,我需要搜索tempVar1=PROPERTY_X; q=tempVar1+10/(200*tempVar1); iffor,{{1}等条件并且将它们和它们的索引保存到地图中,然后我对“PROPERTY_X”及其索引的出现也这样做。然后我尝试找到最接近“PROPERTY_X”索引的索引“=”并在那里插入我的新变量,之后我继续用变量名替换我需要的东西。

else方法基于某些分隔符进行拆分,基本上插入列表中的“text”字符串看起来像这样:

while

欢迎任何建议。

0 个答案:

没有答案