Swift: как добавлять разделители в строку через нефиксированные интервалы только при сопоставлении условий? - PullRequest
1 голос
/ 02 апреля 2020

Итак, у меня есть эта часть кода:

stringName = "\(param1)\(param2)\(param3)\(param4)\(param5)"

Все эти параметры вычисляются внутри функции, в которую вызывается stringName. То, что я хочу сделать, это вывести имя строки со всеми этими параметрами, разделенными, скажем, комой, что в теории было бы так же просто, как разделить их комой внутри строки, однако я хочу, чтобы кома появлялась только между этими параметрами, когда они существуют, и они не все будут существовать в каждом случае. Поскольку функция, которую я создаю, зависит от массива и этих параметров от длины массива, поэтому в некоторых случаях возвращаемая строка будет:

stringName = "param1,param4"

или

stringName = "param2,param3,param5"

et c ... (получил максимум 8 из этих параметров) Так как иногда эти параметры оказываются пустыми строками, я не хочу заканчивать тем, что строковое имя состоит только из ком, просто хочу, чтобы мои запятые появлялись между 2 параметры, когда они не пустые строки. Любая идея, как отформатировать это?

Спасибо!

Ответы [ 2 ]

2 голосов
/ 02 апреля 2020

Вы можете поместить все свои paramX в массив, отфильтровать пустые и использовать joined(separator:), чтобы объединить их:

stringName = [param1, param2, param3, param4, param5, param6, param7, param8]
                .filter { !$0.isEmpty }.joined(separator: ",")

Еще лучшим способом сделать это было бы не используйте 8 различных переменных и перепишите ваш метод так, чтобы он использовал массив с самого начала.

2 голосов
/ 02 апреля 2020

Предполагая, что param1, ..., param5 все String, необязательно, вы можете написать что-то вроде этого:

let param1: String = ""
let param2: String = "value2"
let param3: String = "value3"
let param4: String = ""
let param5: String = "value5"

let stringName = [param1, param2, param3, param4, param5]
    .filter {!$0.isEmpty}
    .joined(separator: ",")
print(stringName) //->value2,value3,value5
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...