Метод indexOf не видит символ в строке
Пытаюсь узнать индекс тире в строке, сам символ метод contain в строке видит и выдает true, но indexOf выдает -1. Проблема возникает только в той части строки, которая идет после NNBSP(присутствует на сайте, который пытаюсь пропарсить), от него я избавился, но проблема не исчезла. Как можно решить данную проблему? Заранее спасибо за ответы.
@GetMapping("/test")
public String test()
{
String money = "400 000 – 800 000 ₸";
money = money.replaceAll(" ", "");
/*if(money.contains("от") || money.contains("до"))
{
money = money.substring(3, money.length() - 1);
}*/
if(money.contains("–"))
{
System.out.println(money.indexOf("-"));
}
System.out.println(money);
return "main";
}
Ответы (1 шт):
Автор решения: CrazyElf
→ Ссылка
Просто у вас в коде два разных знака -, это легко проверяется поиском по этой странице с вопросом прямо в браузере. Я пометил комментариями, где какой знак используется.
String money = "400 000 – 800 000 ₸"; // Среднее тире (En Dash) –
...
if(money.contains("–")) // Среднее тире (En Dash) –
{
System.out.println(money.indexOf("-")); // Обычный дефис, код 45
}
И таких внешне похожих знаков на странице может быть много разных. Бывают и разные виды пробелов, например.
