Я пытаюсь создать калькулятор Android, который использует строки в Kotlin. Моя проблема в том, как удалить запятую (или отрицательную), если она уже есть.
Вот мой код, он правильно добавляет запятую, но не удаляет ее, если пользователь щелкает снова:
if (!buClickValue.contains(".")) {
buClickValue += "."
} else {
buClickValue.replace(".", "")
}
}
или вот мой Github
Простите мою ошибку. Если вы посмотрите на код, вы увидите, что если нет "." в строке он должен добавить единицу к строке, но если она уже есть, он должен удалить ее.
Непонятно, о чем вы спрашиваете.
У меня вопрос, как удалить "."? // Я добавил свой git к вопросу, может быть, это поможет
Замена - не лучший способ удалить символ или последовательность в строке: используйте фильтр вместо замены
Метод replace() предназначен для возврата значения нового String после замены символов. В вашем случае значение, полученное после замены символов, никогда не переназначается обратно исходной переменной.
В частности, в вашем предложении else строку следует изменить на -
buClickValue = buClickValue.replace(".", "")
Большое спасибо, что решили мою проблему и хорошо ее объяснили!
Более логичный прием - не заменять, а фильтровать
buClickValue = buClickValue.filterNot { it == "."[0]) }
Или продлить
filtered = ".,;:"
buClickValue = buClickValue.filterNot { filtered.indexOf(it) > -1 }
1-й пример больше не компилировался. Я добавил ".get (0)"
Это должно быть предпочтительнее принятого ответа. Хороший ответ!
Вы говорите, что пытаетесь добавить / удалить запятую, но ваш код подразумевает, что вы добавляете / удаляете точку.