package org.the_jk.cleversync object StringUtils { fun split(input: String, delimiter: Char, keepEmpty: Boolean = true, limit: Int = 0): List { return buildList { var offset = 0 var count = 0 while (true) { val next = input.indexOf(delimiter, offset) if (next == -1) { if (keepEmpty || offset < input.length) { if (limit > 0 && count == limit) { add("${removeLast()}${delimiter}${input.substring(offset)}") break } add(input.substring(offset)) } break } if (keepEmpty || offset < next) { if (limit > 0 && count == limit) { add("${removeLast()}${delimiter}${input.substring(offset)}") break } add(input.substring(offset, next)) count++ } offset = next + 1 } } } }