Alex
03/31/2022, 10:40 AMAlex
03/31/2022, 10:42 AMa121_c312_t1231_dasdasdaadaa8888Fleshgrinder
03/31/2022, 10:43 AMval affiliateId: String?
init {
    var affiliateId: String? = null
    // snip
    this.affiliateId = affiliateId
}Alex
03/31/2022, 10:46 AMFleshgrinder
03/31/2022, 10:51 AMclass C(val a: String?, val b: String?, val c: String?) {
  companion object {
    operator fun invoke(a: String?): C {
      var b: String? = null
      var c: String? = null
      // snip
      return C(a, b, c)
    }
  }
}bcinternalAlex
03/31/2022, 10:55 AMFleshgrinder
03/31/2022, 11:07 AMcompanion object {
  @JvmStatic
  @JsonCreator
  operator fun invoke() {}
}Alex
03/31/2022, 12:41 PMinit { }companion objectIvan Pavlov
04/01/2022, 8:22 AMfilterisNotEmptysubstring(1).isNotEmpty()it.lengthdata class QTag(val rawQTag: String?) {
    val affiliateId: String?
    val creativeId: String?
    val trackerId: String?
    init {
        // build intermediate list of strings to perform search later
        val strs = rawQTag.orEmpty().lowercase()
            .split("_")
            .filter { it.length > 1 }
        affiliateId = strs.findIdByPrefix("a")
        creativeId = strs.findIdByPrefix("c")
        trackerId = strs.findIdByPrefix("t")
    }
    private fun List<String>.findIdByPrefix(prefix: String): String? = firstNotNullOfOrNull {
        if (it.substring(0, 1) == prefix) it.substring(1) else null
    }
}Tim Oltjenbruns
04/04/2022, 3:37 PMassociateByTim Oltjenbruns
04/04/2022, 3:55 PMdata class QTag(val rawQTag: String?) {
    val affiliateId: String?
    val creativeId: String?
    val trackerId: String?
    init {
        // build intermediate list of strings to perform search later
        val substringsByPrefix = rawQTag.orEmpty().lowercase()
            .split("_")
            .filter { it.length > 1 }
            .reversed()
            .associateBy { it[0] }
        affiliateId = substringsByPrefix.getWithoutPrefix('a')
        creativeId = substringsByPrefix.getWithoutPrefix('c')
        trackerId = substringsByPrefix.getWithoutPrefix('t')
    }
    private fun Map<Char, String>.getWithoutPrefix(c: Char) = this[c]?.substring(1)
}firstNotNullOfOrNullFleshgrinder
04/04/2022, 4:12 PMsplit("_")