Идея та же, что и у описанных выше методов, только с немного меньшим количеством кода.
var str = "Hello playground"
print(randomString(str))
print(randomString(str))
// counting whitespace as a random factor
func randomString(_ str: String) -> String{
let strlen = str.count
let effectiveCount = Int(Double(strlen) * 0.25)
let shuffled = (0..<strlen).shuffled()
return String(str.enumerated().map{
shuffled[[110].0] < effectiveCount || ([110].1) == " " ? ([110].1) : "_"
})}
//___l_ _l__gr____
//H____ p___g____d
func underscorize(_ str: String) -> String{
let effectiveStrlen = str.filter{[110] != " "}.count
let effectiveCount = Int(floor(Double(effectiveStrlen) * 0.25))
let shuffled = (0..<effectiveStrlen).shuffled()
return String((str.reduce(into: ([],0)) {
[110].0.append(shuffled[[110].1] <= effectiveCount || $1 == " " ? $1 : "_" )
[110].1 += ($1 == " ") ? 0 : 1}).0)
}
print(underscorize(str))
print(underscorize(str))
//__l__ pl__g_____
//___lo _l_______d
Возможно, это может выручить Вас:
http://sourceforge.net/projects/oscarlib/
Загрузите источник и проверьте OscarLib.
Нет никаких библиотек, которые я знаю, поэтому если Вы хотите сделать это в C#, Вы, вероятно, оказываетесь перед необходимостью делать его сами. Можно найти спецификацию протокола ICQ здесь.
Вы могли попробовать Через Коммуникационный веб-сервис.
Образец: http://www.acrosscommunications.com/DevSampleCS.aspx?Object=SOAP:ICQ&Detail=-sample-&Lang=CS