Как я могу избежать имен приложений в именах элементов appapp, возвращенных из Google Play getSkuDetails?

Мне бы хотелось использовать вызов getSkuDetails() из In-app Billing v3 API для динамического отображения списка опций покупки inapp с правильно переведенными названиями и соответствующей ценой.

Однако свойство title имеет значение "<item title> (app name)", которое менее полезно. Как я могу получить только название элемента без имени приложения без взлома строки?

Ответы

Ответ 1

Так оно и есть. Я имею в виду, даже мне это не понравилось, очевидно, пользователь знает, что он покупает приложение, но я думаю, что Google будет отвечать на него таким образом только

Ответ 2

Поскольку никто не ответил с фактическим шаблоном регулярных выражений, который соответствует имени приложения в скобках в названии SKU, я решил опубликовать здесь код для дальнейшего использования:

// matches the last text surrounded by parentheses at the end of the SKU title
val skuTitleAppNameRegex = """(?> \(.+?\))$""".toRegex()

val titleWithoutAppName = skuDetails.title.replace(skuTitleAppNameRegex, "")

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

Поскольку регулярные выражения общеизвестно дороги в создании, желательно хранить их в поле и избегать их построения каждый раз, когда вы анализируете свои SKU.