Я имеющий файл данных (.txt) строятся следующим образом:Удаления счетчиков в строке данных
AmountItem ItemName
AmountItem ItemName
...
ItemName
может содержать все символы, в том числе пробелов и специальных символов. AmountItem
- целое число.
То, что я пытаюсь сделать, это получить List<String>
, содержащий уникальные записи ItemName
s, где каждый ItemName
файла данных присутствует один раз.
Я пытался сделать это путем считывания файла с BufferedReader reader
фильтрации каждую строку для ItemName
следующим образом
List<String> test = new ArrayList<String>();
reader = new BufferedReader(...);
while((line = reader.readLine()) != null){
boolean noElement = true;
line = line.replace("\\d+ ",""); \\remove the amount
for(String str : test)
if(str.equals(line))
noElement = false;
if(noElement)
test.add(line);
}
Все работает отлично, за исключением суммы каждого пункта не удаляется.
Я попытался удалить что-то из тестовых строк, например "12341 foo".replace("\\d","X")
, который возвращает 12341 foo
в качестве замененной строки. То же самое касается других подстановочных знаков регулярного выражения и управляющих символов, например. "12341 foo".replace("^1","X")
возвращение "12341 foo"
. Однако замена одного символа в строке работает.
Что я сделал не так? Или есть более эффективный способ сделать это?
Более эффективный способ, вероятно, можно разделить на пространстве, удалить первый элемент в массиве результатов, а затем соединить их обратно пространство. – Jerry