如何在Java中替换字符串中的所有换行符,以便在Windows和Linux上工作(即没有特定于OS的回车/换行/换行等问题)?
我试过了(注意readFileAsString是一个将文本文件读入String的函数):
String text = readFileAsString("textfile.txt");
text.replace("\n", "");
Run Code Online (Sandbox Code Playgroud)
但这似乎不起作用.
如何才能做到这一点?
我正在使用这个练习作为教学工具来帮助我学习一些Java GUI编程概念.我正在寻找的是一般性的理解,而不是一个特定问题的详细解决方案.我希望编码这个"正确"将教会我如何处理未来的多线程问题.如果这对于这个论坛来说太笼统了,那么它可能属于程序员吗?
我正在模拟读卡器.它有一个GUI,允许我们将卡加载到料斗中并按下Start等,但它的主要"客户端"是CPU,在单独的线程上运行并请求卡.
读卡器保持单个缓冲区.如果卡片请求进入且缓冲区为空,读卡器必须从料斗读取卡片(需要1/4秒,这是1962年).在将卡读入缓冲区后,读卡器将缓冲区发送到CPU,并在下一个请求之前立即启动另一个缓冲区加载操作.
如果不仅缓冲器是空的,而且料斗中没有卡,那么我们必须等到操作员将料斗放入料斗并按下Start(它始终启动缓冲加载操作).
在我的实现中,卡请求以invokeLater() Runnables在EDT上排队的形式发送到读卡器.在myRunnable.run()时间,无论是一个缓冲器将可用(在这种情况下,我们可以将其发送到CPU和开球另一个缓冲器负载操作),或缓冲区将是空的.如果它是空的怎么办?
两种可能性:(a)飞行中已经有缓冲加载操作,或(b)卡漏斗是空的(或尚未启动).在任何一种情况下,让EDT等待是不可接受的.工作(和等待)必须在后台线程上完成.
为了简单起见,我尝试生成一个SwingWorker来响应每个卡请求,而不管缓冲区的状态如何.伪代码是:
SwingWorker worker = new SwingWorker<Void, Void>() {
public Void doInBackground() throws Exception {
if (buffer.isEmpty()) {
/*
* fill() takes 1/4 second (simulated by Thread.sleep)
* or possibly minutes if we need to have another
* card deck mounted by operator.
*/
buffer.fill();
}
Card card = buffer.get(); // empties buffer
/*
* Send card to CPU
*/
CPU.sendMessage(card); // <== (A) put card in msg queue …Run Code Online (Sandbox Code Playgroud) 第一件事让我感到震惊:System.currentTimeMillis()我认为非常准确,给出一个long值,以及在哪里作为参数的SwingTimers请求int; 这是什么意思?不要认为SwingTimers准确吗?
2)假设一个字的定时SwingTimer需要x毫秒; 如果我们重复一项任务(突出显示单词,如卡拉OK应用程序),我会包含以下代码:
/*see the time taken for each letter*/
int tik=(int) delay / words[index].length();
/* make adjustment(subtract few millisecs) as per the time taken by each word*/
if(tik <69)
timer.setDelay((int) (delay / words[index].length())-3);
if(tik >=69&&tik<=149)
timer.setDelay((int) (delay / words[index].length())-6);
else if(tik <=150)
timer.setDelay((int) (delay / words[index].length())-9);
else if(tik >150)
timer.setDelay((int) (delay / words[index].length())-100);
Run Code Online (Sandbox Code Playgroud)
工作安静很好,但我绝对肯定我不能依赖这个,因为时间,长度可能会改变!如何克服这个问题?因为几毫秒的变化可能给我带来灾难性的后果.
3)同时我想知道卡拉OK制造商和播放器软件遵循哪种技术???,非常准确.
java ×3
swing ×2
buffering ×1
concurrency ×1
line-breaks ×1
newline ×1
string ×1
swingworker ×1
timer ×1