Удалить первые два символа в строке
есть у меня строка на входе, и в ней нужно удалить первые два символа у строк, длина которых больше 4
public static void main(String[] args) throws FileNotFoundException {
String content = getInput("part1.txt");
}
public static String getInput(String fileName) {
StringBuilder sb = new StringBuilder();
try {
Scanner scanner = new Scanner(new File(fileName), "cp1251");
while(scanner.hasNextLine()) {
sb.append(scanner.nextLine()).append(System.lineSeparator());
}
scanner.close();
return sb.toString();
}catch(IOException ex) {
ex.printStackTrace();
}
return sb.toString();
}
как это можно сделать? на входе
When I was younger,
So much younger
than today
на выходе
en I was unger,
So ch unger
an day
Ответы (2 шт):
Автор решения: dIm0n
→ Ссылка
Находит слова длины 4+, удаляете в них найденную группу:
([\w'-][\w'-])[\w'-][\w'-]+
Использованы именно такие определения символов, а не просто \w, исходя из комментариев. Нужны ещё какие-то символы — добавляйте.
When I was younger,
So much younger
than today
wbtb wtombotb wrb omwb wtbombr wtomo
Автор решения: d_ser
→ Ссылка
Предполагаю, что это какая-то практическая задачка, и особого внимания ко входным данным не требует. Чуток видоизменил ваш метод, при необходимости можно внести дополнения в переменную regex
public static String getInput(String fileName) {
StringBuilder sb = new StringBuilder();
String regex = "([A-Za-z]+)[^A-Za-z]+";
Pattern pattern = Pattern.compile(regex);
try (Scanner scanner = new Scanner(new File(fileName), "cp1251")) {
while(scanner.hasNextLine()) {
String line = scanner.nextLine() + System.lineSeparator();
Matcher matcher = pattern.matcher(line);
while (matcher.find()) {
String block = matcher.group();
String word = block.replaceAll(regex, "$1");
sb.append((word.length() >= 4 ? block.substring(2) : block));
}
}
}catch(IOException ex) {
ex.printStackTrace();
}
return sb.toString();
}