Рубрики
Без рубрики

Преобразование имен на C в Java

Протокол x11 описан в нескольких xml-файлах проекта xcb. Эти файлы определяют структуры… С тегами c, java, учебник.

Протокол x11 описан в нескольких xml-файлах в проекте xcb . Эти файлы определяют структуры, используемые в клиенте C. Каждая структура содержит типы и имена переменных. Имена переменных имеют две проблемы в java.

  • не следуйте правилам нижнего регистра верблюдов
  • начните с недопустимых символов (цифр)

При преобразовании этих имен в java я хотел найти существующее решение, которое могло бы сделать это быстро. Одним из преимуществ java является то, что так много проблем уже было решено той или иной библиотекой. Я наткнулся на два проекта, которые помогли мне решить эти проблемы.

implementation group: 'com.google.guava', name: 'guava', version: '29.0-jre'
implementation 'pl.allegro.finance:tradukisto:1.8.0'

Guava содержит класс Формат регистра , который может преобразовываться между соглашениями об именовании в стиле java и c. Для преобразования с c в java:

String converted =  CaseFormat.LOWER_UNDERSCORE.to(CaseFormat.LOWER_CAMEL, x11Name)

Это работает для большинства имен, но некоторые элементы перечисления в протоколе начинаются с номера.

    
          8 
         16 
         32 
    

Для преобразования этих имен tradukisto можно использовать для первого преобразования числа в слова. Затем можно добавить остальную часть имени.

        String startNumbers = x11Name.find('^\\d+')
        if(startNumbers) {
            String remainingString = x11Name.substring(startNumbers.length())
            String numberWords = ValueConverters.ENGLISH_INTEGER.asWords(startNumbers.toInteger())
                .replace('-', ' ')
                .split(' ').collect{ it.capitalize() }.join('')
            return numberWords + remainingString
        }

С Гуавой и традукисто Я могу легко конвертировать имена переменных c в имена переменных java.

Оригинал: “https://dev.to/moaxcp/converting-names-in-c-to-java-4im5”