Метод 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
}

И таких внешне похожих знаков на странице может быть много разных. Бывают и разные виды пробелов, например.

→ Ссылка