【问题标题】:How can I do it faster in java? Copy chars of a long string我怎样才能在java中更快地做到这一点?复制长字符串的字符
【发布时间】:2020-03-14 09:14:58
【问题描述】:

我有一个文本文件:(CNC G 代码) 行数:14415 字符数:263950

我必须更改其中的一些工具命令。 如果我找到“T***”,例如“T120”,我需要将其替换为用户提供的其他工具命令,例如“T30”。

我写了一个工作程序(javafx),读取txt文件,更改工具,导出txt文件,但是更改方法真的很慢。

这就是它现在的工作方式,以一种简单的形式,我将每个 char 复制到另一个字符串变量,除非我需要替换:

String originalGcode come from txt file reading
String newGcode = "";

for ( int i = 0; i < originalGcode.length(); i++ ){
   if ( condition == true ){
       newGcode += newToolCodeFromUser;
   } else {
       newGcode += originalGcode.charAt(i);
}

现在需要 34 秒。 您有什么想法吗,如何在 1-2 秒内完成?

替换不是一个好的解决方案,因为: - 我在 G 代码中有很多工具代码 - 一个工具代码(例如 T120)出现多次。 - 例如:我在程序的第 20 行和第 30 行有 T120,第 50 行和第 60 行有 T30 - 首先,用户想要将 T120 更改为 T30 - 其次,用户想要将 T30 更改为 T77 -> 我只需要在第 50 行和第 60 行替换 T30,但由于第一个更改命令,我已经在第 20 行和第 30 行替换了 T30。

我是 JAVA 编程新手,请解释一下您的解决方案 :)

【问题讨论】:

  • 现在我保存我已经进行更改的行数,当下一个更改命令到来时,我找到一个 T*** 代码,我检查我是否在这一行更改了工具已经?

标签: java string replace char copy


【解决方案1】:

假设替换逻辑中不存在循环,你也许可以做一系列替换:

String originalGcode = "T10 T30 T120 T20";
String newGcode = originalGcode.replace("T30", "T77")
    .replace("T120", "T30");
System.out.println(newGcode);

打印出来:

T10 T77 T30 T20

【讨论】:

    猜你喜欢
    • 2013-03-30
    • 2015-05-01
    • 2015-12-02
    • 1970-01-01
    • 1970-01-01
    • 2022-11-09
    • 2018-11-11
    • 2019-12-29
    • 2018-10-05
    相关资源
    最近更新 更多