{"id":41154881,"url":"https://github.com/brazilian-utils/dotnet","last_synced_at":"2026-01-22T19:12:52.552Z","repository":{"id":49979428,"uuid":"146657926","full_name":"brazilian-utils/dotnet","owner":"brazilian-utils","description":"Utils library for specific Brazilian businesses","archived":false,"fork":false,"pushed_at":"2026-01-18T01:55:42.000Z","size":69,"stargazers_count":21,"open_issues_count":0,"forks_count":1,"subscribers_count":5,"default_branch":"master","last_synced_at":"2026-01-18T13:11:23.158Z","etag":null,"topics":["brazil","cnpj","cpf","cumbucadev","dotnet","renavam"],"latest_commit_sha":null,"homepage":"","language":"F#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/brazilian-utils.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2018-08-29T20:59:36.000Z","updated_at":"2026-01-18T02:53:35.000Z","dependencies_parsed_at":"2022-08-03T16:30:20.590Z","dependency_job_id":null,"html_url":"https://github.com/brazilian-utils/dotnet","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/brazilian-utils/dotnet","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brazilian-utils%2Fdotnet","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brazilian-utils%2Fdotnet/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brazilian-utils%2Fdotnet/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brazilian-utils%2Fdotnet/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/brazilian-utils","download_url":"https://codeload.github.com/brazilian-utils/dotnet/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brazilian-utils%2Fdotnet/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28669088,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-22T17:07:18.858Z","status":"ssl_error","status_checked_at":"2026-01-22T17:05:02.040Z","response_time":144,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["brazil","cnpj","cpf","cumbucadev","dotnet","renavam"],"created_at":"2026-01-22T19:11:02.906Z","updated_at":"2026-01-22T19:12:52.540Z","avatar_url":"https://github.com/brazilian-utils.png","language":"F#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Brazilian Utils .NET\n\nBiblioteca de utilitários para regras de negócio específicas do Brasil.\n\n[![Build Status](https://travis-ci.org/brazilian-utils/dotnet.svg?branch=master)](https://travis-ci.org/brazilian-utils/dotnet)\n![NuGet](https://img.shields.io/nuget/v/BrazilianUtils.svg)\n\n*[English version](README_EN.md)*\n\n## Instalação\n\n```sh\n# dotnet CLI\ndotnet add package BrazilianUtils\n\n# Package Manager\nPM\u003e Install-Package BrazilianUtils\n```\n\n## Utilização\n\n- [CPF](#cpf)\n- [CNPJ](#cnpj)\n- [CEP](#cep)\n- [Boleto](#boleto)\n- [Telefone](#telefone)\n- [CNH](#cnh)\n- [PIS](#pis)\n- [RENAVAM](#renavam)\n- [Título de Eleitor](#título-de-eleitor)\n- [Processo Jurídico](#processo-jurídico)\n- [Placa de Veículo](#placa-de-veículo)\n- [Moeda](#moeda)\n- [Utilitários](#utilitários)\n\n---\n\n### CPF\n\nO CPF (Cadastro de Pessoas Físicas) é o registro de identificação do contribuinte individual brasileiro.\n\n#### Validar\n\n```csharp\nusing BrazilianUtils;\n\nCpf.IsValid(\"529.455.577-89\");  // true\nCpf.IsValid(\"52945557789\");     // true\n\nCpf.IsValid(\"cpf-invalido\");    // false\nCpf.IsValid(\"111.111.111-11\");  // false (dígitos repetidos)\nCpf.IsValid(\"\");                // false\nCpf.IsValid(null);              // false\n```\n\n#### Formatar\n\n```csharp\nCpf.Format(\"52945557789\");  // \"529.455.577-89\"\n```\n\n#### Gerar\n\n```csharp\nCpf.Generate();  // \"38041016588\"\n```\n\n---\n\n### CNPJ\n\nO CNPJ (Cadastro Nacional da Pessoa Jurídica) é o número de identificação de entidades jurídicas no Brasil.\n\n#### Validar\n\n```csharp\nusing BrazilianUtils;\n\nCnpj.IsValid(\"11.886.541/0001-85\");  // true\nCnpj.IsValid(\"11886541000185\");      // true\n\n// CNPJ Alfanumérico (Instrução Normativa RFB nº 2.119)\nCnpj.IsValid(\"AA.BBB.CCC/DDDD-01\");  // true (se os dígitos verificadores forem válidos)\n\nCnpj.IsValid(\"cnpj-invalido\");       // false\nCnpj.IsValid(\"\");                    // false\nCnpj.IsValid(null);                  // false\n```\n\n#### Formatar\n\n```csharp\nCnpj.Format(\"11886541000185\");  // \"11.886.541/0001-85\"\n```\n\n#### Gerar\n\n```csharp\n// Gerar CNPJ numérico\nCnpj.Generate();             // \"13401551551768\"\n\n// Gerar CNPJ alfanumérico\nCnpj.GenerateAlphanumeric(); // \"AB12CD34EF5601\"\n```\n\n---\n\n### CEP\n\nO CEP (Código de Endereçamento Postal) é o código postal brasileiro.\n\n#### Validar\n\n```csharp\nusing BrazilianUtils;\n\nCep.IsValid(\"92990-000\");  // true\nCep.IsValid(\"92990000\");   // true\n\nCep.IsValid(\"12345\");      // false (tamanho incorreto)\nCep.IsValid(\"invalido\");   // false\n```\n\n#### Formatar\n\n```csharp\nCep.Format(\"92990000\");  // \"92990-000\"\n```\n\n---\n\n### Boleto\n\nValida boletos bancários brasileiros nos formatos de código de barras (44 dígitos) e linha digitável (47 dígitos).\n\n#### Validar\n\n```csharp\nusing BrazilianUtils;\n\n// Linha digitável (47 dígitos)\nBoleto.IsValid(\"00198.10001 00030.212237 00217.236553 1 35742800321323\");  // true\n\n// Código de barras (44 dígitos)\nBoleto.IsValid(\"00193357428003213230001000302122700021723655\");  // true\n\nBoleto.IsValid(\"boleto-invalido\");  // false\n```\n\n---\n\n### Telefone\n\nValida números de telefone brasileiros, incluindo formatos de celular e telefone fixo.\n\n#### Validar\n\n```csharp\nusing BrazilianUtils;\n\n// Celular (11 dígitos com o nono dígito)\nPhone.IsValid(\"(51) 99922-3344\");  // true\nPhone.IsValid(\"51999223344\");      // true\n\n// Telefone fixo (10 dígitos)\nPhone.IsValid(\"(11) 3344-5566\");   // true\nPhone.IsValid(\"1133445566\");       // true\n\nPhone.IsValid(\"(11) 9000-0000\");   // false (primeiro dígito inválido)\nPhone.IsValid(\"1234567\");          // false (tamanho incorreto)\n```\n\n---\n\n### CNH\n\nA CNH (Carteira Nacional de Habilitação) é a carteira de motorista brasileira. Valida o formato de 2022 em diante.\n\n#### Validar\n\n```csharp\nusing BrazilianUtils;\n\nCnh.isValidCnh(\"98765432100\");   // true\nCnh.isValidCnh(\"987654321-00\");  // true (símbolos são ignorados)\n\nCnh.isValidCnh(\"12345678901\");   // false (dígitos verificadores inválidos)\nCnh.isValidCnh(\"00000000000\");   // false (dígitos repetidos)\nCnh.isValidCnh(\"A2C45678901\");   // false (não numérico)\n```\n\n---\n\n### PIS\n\nO PIS (Programa de Integração Social) é o número de identificação do programa de integração social brasileiro.\n\n#### Validar\n\n```csharp\nusing BrazilianUtils;\n\nPis.isValid(\"82178537464\");  // true\nPis.isValid(\"55550207753\");  // true\n\nPis.isValid(\"12345678901\");  // false (dígito verificador inválido)\nPis.isValid(\"1234567\");      // false (tamanho incorreto)\n```\n\n#### Formatar\n\n```csharp\nPis.formatPis(\"12345678909\");  // Some \"123.45678.90-9\"\n```\n\n#### Gerar\n\n```csharp\nPis.generate();  // \"82178537464\"\n```\n\n---\n\n### RENAVAM\n\nO RENAVAM (Registro Nacional de Veículos Automotores) é o número de registro de veículos no Brasil.\n\n#### Validar\n\n```csharp\nusing BrazilianUtils;\n\nRenavam.isValidRenavam(\"86769597308\");  // true\n\nRenavam.isValidRenavam(\"12345678901\");  // false (dígito verificador inválido)\nRenavam.isValidRenavam(\"11111111111\");  // false (dígitos repetidos)\nRenavam.isValidRenavam(\"1234567\");      // false (tamanho incorreto)\n```\n\n---\n\n### Título de Eleitor\n\nO Título de Eleitor é o documento de registro eleitoral brasileiro.\n\n#### Validar\n\n```csharp\nusing BrazilianUtils;\n\nVoterId.isValid(\"690847092828\");  // true\nVoterId.isValid(\"163204010922\");  // true\n\nVoterId.isValid(\"123456789012\");  // false (dígitos verificadores inválidos)\nVoterId.isValid(\"12345\");         // false (tamanho incorreto)\n```\n\n#### Formatar\n\n```csharp\nVoterId.formatVoterId(\"690847092828\");  // Some \"6908 4709 28 28\"\n```\n\n#### Gerar\n\n```csharp\nVoterId.generate(\"SP\");  // Some \"123456780101\" (São Paulo)\nVoterId.generate(\"RJ\");  // Some \"987654320352\" (Rio de Janeiro)\nVoterId.generate(\"ZZ\");  // Some \"112233440028\" (Estrangeiros)\n```\n\n---\n\n### Processo Jurídico\n\nValida números de processos jurídicos brasileiros seguindo o padrão de numeração única do CNJ (Conselho Nacional de Justiça).\n\nFormato: `NNNNNNN-DD.AAAA.J.TR.OOOO`\n\n- `NNNNNNN`: Número sequencial de 7 dígitos\n- `DD`: Dígitos verificadores de 2 dígitos (Módulo 97 Base 10, ISO 7064:2003)\n- `AAAA`: Ano com 4 dígitos\n- `J`: Segmento de justiça de 1 dígito (1-9)\n- `TR`: Tribunal de 2 dígitos\n- `OOOO`: Unidade de origem de 4 dígitos\n\n#### Validar\n\n```csharp\nusing BrazilianUtils;\n\nLegalProcess.isValid(\"6847650-61.2023.3.03.0000\");  // true\nLegalProcess.isValid(\"68476506120233030000\");       // true\n\nLegalProcess.isValid(\"68476506020233030000\");       // false (dígito verificador incorreto)\nLegalProcess.isValid(\"123\");                         // false (tamanho incorreto)\n```\n\n#### Formatar\n\n```csharp\nLegalProcess.formatLegalProcess(\"68476506120233030000\");  // Some \"6847650-61.2023.3.03.0000\"\n```\n\n#### Gerar\n\n```csharp\nLegalProcess.generate(Some 2024, Some 5);  // Some \"12345678720245050000\"\nLegalProcess.generate(None, None);          // ID de processo jurídico válido aleatório\n```\n\n---\n\n### Placa de Veículo\n\nValida e formata placas de veículos brasileiros no formato antigo (LLLNNNN) e no formato Mercosul (LLLNLNN).\n\n#### Validar\n\n```csharp\nusing BrazilianUtils;\n\n// Formato antigo (LLLNNNN)\nLicensePlate.isValid(\"ABC1234\", Some \"old_format\");  // true\nLicensePlate.isValid(\"ABC1234\", None);               // true\n\n// Formato Mercosul (LLLNLNN)\nLicensePlate.isValid(\"ABC1D23\", Some \"mercosul\");    // true\nLicensePlate.isValid(\"ABC1D23\", None);               // true\n\nLicensePlate.isValid(\"ABCD123\", None);               // false\n```\n\n#### Formatar\n\n```csharp\nLicensePlate.formatLicensePlate(\"ABC1234\");  // Some \"ABC-1234\" (formato antigo)\nLicensePlate.formatLicensePlate(\"abc1e34\");  // Some \"ABC1E34\"  (Mercosul)\n```\n\n#### Converter para Mercosul\n\n```csharp\nLicensePlate.convertToMercosul(\"ABC4567\");  // Some \"ABC4F67\"\n```\n\n#### Obter Formato\n\n```csharp\nLicensePlate.getFormat(\"ABC1234\");  // Some \"LLLNNNN\"\nLicensePlate.getFormat(\"ABC1D23\");  // Some \"LLLNLNN\"\n```\n\n#### Gerar\n\n```csharp\nLicensePlate.generate(None);                // Some \"ABC1D23\" (Mercosul por padrão)\nLicensePlate.generate(Some \"LLLNLNN\");      // Some \"XYZ2E45\" (Mercosul)\nLicensePlate.generate(Some \"LLLNNNN\");      // Some \"ABC1234\" (Formato antigo)\n```\n\n---\n\n### Moeda\n\nUtilitários para formatação e conversão de texto do Real brasileiro (BRL).\n\n#### Formatar Moeda\n\n```csharp\nusing BrazilianUtils;\n\nCurrency.formatCurrency(1234.56M);   // Some \"R$ 1.234,56\"\nCurrency.formatCurrency(-1234.56M);  // Some \"R$ -1.234,56\"\nCurrency.formatCurrency(0M);         // Some \"R$ 0,00\"\n```\n\n#### Converter para Texto\n\n```csharp\nCurrency.convertRealToText(1523.45M);\n// Some \"Mil, quinhentos e vinte e três reais e quarenta e cinco centavos\"\n\nCurrency.convertRealToText(1.00M);\n// Some \"Um real\"\n\nCurrency.convertRealToText(0.50M);\n// Some \"Cinquenta centavos\"\n\nCurrency.convertRealToText(0.00M);\n// Some \"Zero reais\"\n\nCurrency.convertRealToText(-100.00M);\n// Some \"Menos cem reais\"\n\nCurrency.convertRealToText(1000000.00M);\n// Some \"Um milhão de reais\"\n```\n\n---\n\n### Utilitários\n\nFunções utilitárias gerais para manipulação de strings.\n\n#### Extrair Apenas Números\n\n```csharp\nusing BrazilianUtils;\n\nHelpers.OnlyNumbers(\"123abc456\");          // \"123456\"\nHelpers.OnlyNumbers(\"(11) 9999-0000\");     // \"1199990000\"\nHelpers.OnlyNumbers(\"CPF: 529.455.577-89\"); // \"52945557789\"\n```\n\n---\n\n## Contribuindo\n\nContribuições são bem-vindas! Sinta-se à vontade para enviar um Pull Request. Para mudanças significativas, por favor abra uma issue primeiro para discutir o que você gostaria de alterar.\n\n## Licença\n\nEste projeto é open source e está disponível sob a [Licença MIT](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbrazilian-utils%2Fdotnet","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbrazilian-utils%2Fdotnet","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbrazilian-utils%2Fdotnet/lists"}