Как я могу сделать это быстрее в java? Копировать символы длинной строки - PullRequest
2 голосов
/ 14 марта 2020

У меня есть текстовый файл: (CN C G-код) Количество строк: 14415 Количество символов: 263950

Мне нужно изменить в нем некоторую команду инструмента. Если я нахожу «T ***», например «T120», мне нужно заменить его на другую команду инструмента, заданную пользователем, например «T30».

Я написал рабочую программу (javafx), прочитал txt файл, изменил инструменты, экспортировал txt файл, но метод изменения действительно медленный.

Вот как это работает теперь, в простой форме, я копирую каждый символ в другую строковую переменную, за исключением случаев, когда мне нужно заменить:

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) появляется много раз. - Например: у меня есть T120 в строке 20 и строки 30 и T30 в строке 50 и строке 60 в программе - Во-первых, пользователь хочет изменить T120 на T30 - Во-вторых, пользователь хочет изменить T30 на T77 -> Я должен заменить T30 только в строках 50 и 60, но у меня уже есть T30 в строках 20 и 30 из-за первой команды изменения.

Я новичок в программировании JAVA, объясните, пожалуйста, ваше решение :)

1 Ответ

1 голос
/ 14 марта 2020

Если в логи замены не существует цикла c, вы можете просто выполнить серию замен:

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

Это напечатает:

T10 T77 T30 T20
...