Способ удалить определенные символы из строки? (Котлин)

Это лучшее объяснение, которое я видел. Понимать JavaScripts это с помощью Clarity

Ссылка эта ALLWAYS означает (и содержит значение) объект - особый объект - и он обычно используется внутри функции или метода, хотя он может использоваться вне функции в глобальной области. Обратите внимание, что когда мы используем строгий режим, это содержит значение неопределенных в глобальных функциях и анонимных функциях, которые не привязаны к какому-либо объекту.

Существуют четыре условия, в которых это может запутать:

  1. Когда мы передаем метод (который использует этот ) в качестве параметра, который будет использоваться в качестве функции обратного вызова.
  2. Другой пример, когда это неправильно понимается, - это когда мы используем внутренний метод (замыкание). Важно отметить, что закрытие не может получить доступ к переменной этой внешней функции внешней функции], используя это ключевое слово, потому что эта переменная доступна только самой функции, а не внутренними функциями.
  3. Используя этот , когда метод присваивается переменной. Значение этого привязано к другому объекту, если мы назначим метод, который использует это для переменной
  4. Используя этот при использовании bind, apply и

Он дает примеры кода, объяснения и исправления кода, которые, как я думал, очень полезны.

0
задан Willi Mentzel 16 January 2019 в 22:22
поделиться

3 ответа

Используйте forEach цикл через символы input и замените:

konsonanter.forEach { input = input.replace("${it}o${it}", "${it}", false) }
textView.text = input
0
ответ дан forpas 16 January 2019 в 22:22
поделиться

Если вы используете функцию , замените на Regex и функцию преобразования в качестве параметров, вы можете создать действительно краткую полностью автономную функцию расширения:

fun String.translateBack() = with(Regex("([bcdfghjklmnpqrstvwxz])o\\1", RegexOption.IGNORE_CASE)) {
    replace(this) { "${it.value.first()}" }
}

Пояснение :

Regex будет сопоставлять все одинаковые согласные (независимо от случая) вокруг «o». Чтобы убедиться, что согласные до и после "o" одинаковы, использовалась обратная ссылка к первой группе.

Таким образом, это также будет работать для таких случаев, как «coCatot».

Использование:

println("bob".translateBack()) // b
println("cocatot".translateBack()) // cat
println("coCatot".translateBack()) // cat
0
ответ дан Willi Mentzel 16 January 2019 в 22:22
поделиться

Проблема в том, что вы устанавливаете текст в textView в каждом цикле и никогда не обновляете input. Таким образом, вы, по сути, видите только результат вызова replace, который происходит с параметрами "ZoZ" и "Z" в конце цикла, при этом input остается исходной строкой.

Вместо этого вы можете продолжать обновлять input, а затем установить текст, когда закончите:

val konsonanter = "bcdfghjklmnpqrstvwxzBCDFGHJKLMNPQRSTVWXZ"
var input = editText.text.toString()
var emptyString = ""

for (i in konsonanter) {
    val find_text = i + "o" + i

    val conso = i.toString()

    input = input.replace(find_text, conso, false)
}

textView.text = input
0
ответ дан zsmb13 16 January 2019 в 22:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: