Вы можете разбить строку на массив и обновить последние 3 элемента массива.
Тогда все, что вам нужно сделать, это построить новую строку из этого массива и написать эту строку вместо старой.
Пример:.
while ((line = reader.readLine()) != null) {
if (line.contains(searchText)) {
String updatedLine = updateLastNStrings(line, 3);
writer.write(updatedLine);
break;
} else {
writer.write(line);
}
writer.newLine();
}
private String updateLastNStrings(String line, int n) {
String [] parts = line.split(",");
for (int i = parts.length - n; i < parts.length; i++) {
// update String
String newPart = parts[i] + "_UPDATED";
parts[i] = newPart;
}
return String.join(",", parts);
}
Введите:
1,alex,pass,Admin,Alexandros,Karatzas,Male,18/10/1990,A'Likeiou,Antreas,Karatzas,6945952301,10,18/10/18,7
2,maria,pass1,User,Maria,Karatza,Female,18/10/1990,B'Likeiou,Antreas,Karatzas,6945952381,20,18/10/18,5
Результат
1,alex,pass,Admin,Alexandros,Karatzas,Male,18/10/1990,A'Likeiou,Antreas,Karatzas,6945952301,12_UPDATED,21/10/18_UPDATED,2_UPDATED
2,maria,pass1,User,Maria,Karatza,Female,18/10/1990,B'Likeiou,Antreas,Karatzas,6945952381,20,18/10/18,5
Примечание обновляется строка с _UPDATED
Примечание
Кроме того, найденный вами код некорректен, поскольку для поиска идентификатора он выполняет поиск, если строка содержит charSequence. Что если ID - это содержимое строки?
Пример: * * тысяча двадцать-пять
1,some_content,2,3
2,some_content,1
Вы пытаетесь найти строку по идентификатору 2
, и первая строка будет обновлена вместо второй.