重新格式化列表以添加“”和,

时间:2013-09-19 21:10:05

标签: java list awtrobot reformat

我有一个这样的列表,但在文本文档中要长得多。

123451234
1234123
1234567
12345678

我需要将其重新格式化为

"1123451234", "1234123","1234567","123123123","112345678"

我在循环中尝试使用java的机器人类。我可以添加“”和,但问题是每一行是不同的长度所以我不能简单地点击左箭头一定次数。我能做什么?如果您需要更多信息,请提前询问并表示感谢!

以下是提问者的代码。

Robot r = new Robot(); 

r.keyPress(KeyEvent.VK_QUOTE);
r.keyRelease(KeyEvent.VK_QUOTE);
r.keyPress(KeyEvent.VK_RIGHT);
r.keyRelease(KeyEvent.VK_RIGHT);
r.keyPress(KeyEvent.VK_RIGHT);
r.keyRelease(KeyEvent.VK_RIGHT);
r.keyPress(KeyEvent.VK_RIGHT);
r.keyRelease(KeyEvent.VK_RIGHT);
r.keyPress(KeyEvent.VK_RIGHT);
r.keyRelease(KeyEvent.VK_RIGHT);
r.keyPress(KeyEvent.VK_COMMA);
r.keyRelease(KeyEvent.VK_COMMA);
r.keyPress(KeyEvent.VK_QUOTE);
r.keyRelease(KeyEvent.VK_QUOTE);

3 个答案:

答案 0 :(得分:0)

您可以编写一个帮助程序来获取文本文件中的数据(例如,file.txt)并重新格式化(未经测试的代码,但您明白了):

BufferedReader reader = new BufferedReader(new FileReader(new File("file.txt")));
String line, result = "";
while ((line = reader.readLine()) != null) {
    result += "\"" + line + "\",";
}
result = result.substring(0, result.length() - 1); // remove last comma
// do stuff with result

关于基于机器人的方法:您可以使用 Home End 键跳转到该行的开头或结尾:

// jump to end
r.keyPress(KeyEvent.VK_END);
r.keyRelease(KeyEvent.VK_END);

// jump to start
r.keyPress(KeyEvent.VK_HOME;
r.keyRelease(KeyEvent.VK_HOME);

答案 1 :(得分:0)

如果您不想以编程方式执行此操作,我建议您打开任何体面的文本编辑器,例如Sublime Text并执行查找 - 替换为已启用的正则表达式。

查找(\d+)\n

替换为"$1",

有了这个,如果你做全替换,你最终会得到

"123451234","1234123","1234567",12345678

所以,只需手动完成最后一个。

答案 2 :(得分:0)

使用sed命令行

$ cat test.dat
123451234
1234123
1234567
12345678

$ sed -e's/^\(.*\)$/"\1"/' test.dat
"123451234"
"1234123"
"1234567"
"12345678"

正则表达式匹配整行,并用引号包装它。这会输出到stdout,但只是重定向到文件以保存输出:

$ sed -e's/^\(.*\)$/"\1"/' test.dat > quoted.dat