На данный момент мой код редактирует только слова, если они разделены возвратом. Если я разделяю слова через пробел или запятую, они не заменяются.Как отредактировать определенное слово в текстовом документе?
E.G. Если у меня есть «эй» на одной линии и «привет» на следующем. Мой код может заменить оба из них, если я захочу. Однако, если у меня есть «эй» на одной строке и «привет» разделяется запятой рядом с «эй», мой код тоже не заменяет.
Цель моего кода - заменить слова в файле .CSV, но если мой код не может заменить слова, разделенные запятой или пробелом, то это не сработает.
Вот мой код, который активируется при нажатии кнопки:
try{
// Input the file location into Path variable 'p'
Path p = Paths.get("test test.txt");
//Path p = Paths.get("tiger.csv");
//Read the whole file to a ArrayList
List<String> fileContent = new ArrayList<>(Files.readAllLines(p));
//Converting user input from editSerialField to a string
String strSerial = editSerialField.getText();
//Converting user input from editLocationField to a string
String strLocation = editLocationField.getText();
//This structure looks for a duplicate in the text file, if so, replaces it with the user input from editLocationField.
for (int i = 0; i < fileContent.size(); i++)
{
if (fileContent.get(i).equals(strSerial))
{
fileContent.set(i, strLocation);
break;
}
}
// write the new String with the replaced line OVER the same file
Files.write(p, fileContent);
}catch(IOException e)
{
e.printStackTrace();
}
Как я могу редактировать слова через запятую или пробел? Кроме того, это было бы аккуратно, если бы я мог заменить слова независимо от того, являются ли они прописными или строчными буквами, как это осуществить?
спасибо.
Кажется, что вы используете только целые строки/против известных строк, тогда как вы говорите, что пытаетесь заменить отдельные слова. Вам нужно будет заглянуть в линию и, конечно же, выбрать слова, чтобы заменить отдельные слова. Рассмотрите возможность использования класса «Scanner» или анализатора CSV вместо того, чтобы выполнять манипуляции с строкой самостоятельно ... – BadZen
Когда я использую «Сканер», он не может быть преобразован в «путь». 'List fileContent = new ArrayList <> (Files.readAllLines (s));' while 's' is 'Scanner s = new Scanner (" test test.txt ");'. Должен ли я использовать Scanner по-другому, чтобы прочитать весь файл? –
juiceb0xk
Функция сканера заменяет «Files.readAllLines()», «Сканер» выполняет чтение. См. Https://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html – BadZen