Как я могу удалить символ £ из объекта массива и сохранить его? - PullRequest
3 голосов
/ 11 марта 2019

Я пишу базового чат-бота для университетского проекта.Я до такой степени, что пользователь должен установить бюджет, введя сумму.На данный момент программа умеет искать номер в сообщении пользователя и правильно его сохранять.Однако, когда к нему добавляется знак £, он не может быть сохранен как целое число из-за наличия знака фунта в сообщении.

Это мой код:

//Scan the user message for a budget amount and save it.
    for (int budgetcount = 0; budgetcount < words.length; budgetcount++) 
    {
        if (words[budgetcount].matches(".*\\d+.*"))
        {
            if (words[budgetcount].matches("\\u00A3."))
            {
                words[budgetcount].replace("\u00A3", "");
                System.out.println("Tried to replace a pound sign");
                ResponsesDAO.budget = Integer.parseInt(words[budgetcount]);
            }
            else
            {
                System.out.println("Can't find a pound sign here.");
            }
        }

Iранее пытался .contains () и другие способы указать, что это знак фунта, который я хочу удалить, но я все еще получаю «Не могу найти здесь знак фунта».распечатать.

Если кто-нибудь может дать совет или исправить мой код, я был бы очень признателен.

Заранее спасибо!

Ответы [ 2 ]

3 голосов
/ 11 марта 2019

Strings в JAVA неизменны.Вы заменяете, но никогда не присваиваете результат обратно words[budgetcount].

Измените следующую строку в своем коде:

words[budgetcount] = words[budgetcount].replace("\u00A3", "");

Вот еще один способ сделать это, используя Character.isDigit(...) дляидентифицировать цифру и связать только цифру строку, которая впоследствии может быть проанализирована как целое число,

фрагмент кода:

private String removePoundSign(final String input) {
    StringBuilder builder = new StringBuilder();
    for (int i = 0; i < input.length(); i++) {
        char ch = input.charAt(i);
        if (Character.isDigit(ch)) {
            builder.append(ch);
        }
    }
    return builder.toString();
}

Ввод:

System.out.println(removePoundSign("£12345"));

Выход:

12345
1 голос
/ 11 марта 2019

Вы также можете использовать метод String.replaceAll.

Фрагмент кода:

public class TestClass {

    public static void main(String[] args){

        //Code to remove non-digit number
        String budgetCount = "£34556734";
        String number=budgetCount.replaceAll("[\\D]", "");
        System.out.println(number);

        //Code to remove any specific characters
        String special = "$4351&2.";
        String result = special.replaceAll("[$+.^&]",""); // regex pattern
        System.out.println(result);

    }
}

Вывод:

34556734
43512
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...