Инициализировать список из строки? - PullRequest
0 голосов
/ 03 ноября 2018

У меня есть строка "H1E1T1H1", для которой я хочу заменить каждую '1' строкой, такой как "OP", и я думаю, что это будет проще всего сделать с использованием списков из-за простоты добавления элементов. Тем не менее, мне интересно, как я могу инициализировать список из укуса? (если использование списков на самом деле не делает это намного проще, пожалуйста, поправьте меня :))

1 Ответ

0 голосов
/ 03 ноября 2018

Самый простой способ (и это идиоматично в F #) - использовать метод String.Replace следующим образом:

let str = "H1E1T1H1"
let result = str.Replace("1","OP")

Но в случае, если вы хотите FP только потому, что вы можете ...:)

"H1E1T1H1"
|> Seq.map (function | '1' -> "OP" | x -> string x)
|> String.concat ""

В случае, если вы хотите заменить один и тот же символ разными строками в соответствии с индексом символа

"H1E1T1H1"
|> Seq.mapi (fun i x ->
    match i,x with
    | (i, '1') when i < 4 || i > 6 -> "OP"
    | (_, x) -> string x)
|> String.concat ""
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...