0

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

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);
4

3 回答 3

0

使用 sed 命令行

$ cat test.dat
123451234
1234123
1234567
12345678

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

正则表达式匹配整行并用引号括起来。这输出到标准输出,但只是重定向到一个文件以保存输出:

$ sed -e's/^\(.*\)$/"\1"/' test.dat > quoted.dat
于 2013-09-19T21:50:38.500 回答
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

关于基于机器人的方法:您可以使用HomeEnd键跳转到行首或行尾:

// 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);
于 2013-09-19T21:20:03.040 回答
0

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

寻找(\d+)\n

用。。。来代替"$1",

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

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

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

于 2013-09-19T21:20:16.870 回答