Как вывести коды стран после нахождения их в тексте
Не могу понять , как реализовать поиск кодов стран "RU", "US", "AU" и тд.. в тексте. Есть List<> с кодами и названия стран. Далее , мне нужно найти в тексте эти коды и отобразить полное название страны.
Тут указан метод с кодами и названиями стран:
List<Countries> contextLoads() {
String[] countries = Locale.getISOCountries();
var arr = new ArrayList<Countries>(countries.length);
for(String o : countries) {
arr.add(new Countries(o.toUpperCase(), new Locale("", o).getDisplayCountry()));
}
return Collections.synchronizedList(arr);
}
А в этом методе , необходимо выполнить поиск в тексте, тут присутствуют ошибки, хочу понять , как алгоритм построить , методы не знаю всех :
void contextShow(String text) {
List<Countries> m= contextLoads();
var list = new ArrayList<String>();
String[] listName = m.forEach(x -> System.out.println( x.getName())); - тут ошибка
for(Countries c : m) {
list.add(c.getCode());
}
String reg =String.format("^|[ (])(%s)($|[\\s.!?,)])", list);
Pattern p = Pattern.compile(reg);
Matcher mat = p.matcher(text);
Set<String> countries =new HashSet<>();
while (mat.find()) {
countries.add(listName.contains(mat.group())); -тут ошибка
}
}
Прошу помогите. Хотел в добавок использовать лямды , ну что то не получилось.
Ответы (1 шт):
Автор решения: tym32167
→ Ссылка
Для поиска подстроки есть метод Substring
var countries = new Dictionary<string, string>() {
{"RU", "Россия"},
{"US", "США"},
{"UK", "Англия"},
};
var texts = new[] {
" ...//какой то текст( if== \"RU\" ) ...//какой то текст( if== \"US\" )",
" ...//какой то текст( if== \"UK\" ) ...//какой то текст( if== \"US\" )",
" ...//какой то текст( if== \"RU\" ) ...//какой то текст( if== \"UK\" )",
};
foreach(var txt in texts)
{
var presents = countries.Where(x => txt.Contains($"\"{x.Key}\""));
Console.WriteLine($"В тексте {txt} найдены страны {string.Join(", ", presents.Select(z=>z.Value))}");
}
Вывод
В тексте ...//какой то текст( if== "RU" ) ...//какой то текст( if== "US" ) найдены страны Россия, США
В тексте ...//какой то текст( if== "UK" ) ...//какой то текст( if== "US" ) найдены страны США, Англия
В тексте ...//какой то текст( if== "RU" ) ...//какой то текст( if== "UK" ) найдены страны Россия, Англия