FLUTTER ECOSYSTEM

Chinmay-KB/stringr

Dart/Flutter용 문자열 조작 라이브러리, 스테로이드 강화

stringr 프로젝트 이미지
Stars
6
Forks
3
최근 푸시(UTC)
2026. 8. 3.
프로젝트 상태
활성
Chinmay Kabi GitHub avatar
GITHUB User

Chinmay Kabi ↗

SDE @blendto | Flutter Developer | Master Tinkerer

@blendtoBengaluru
언어Dart

이 저장소가 배포한 패키지

사용 중인 의존성

의존성 목록 2 개

원본 README

아래는 영문 원문 스냅샷입니다. 최신 내용은 GitHub에서 확인하세요.

README 펼치기 / 접기

stringr

pub package codecov License: MIT

A comprehensive string manipulation library for Dart and Flutter. Inspired by VocaJS, stringr provides powerful string operations that work seamlessly with Latin, non-Latin, and Unicode strings.

Features

  • Case Conversion - camelCase, snake_case, kebab-case, Title Case, PascalCase
  • Unicode Support - Full support for non-Latin scripts, diacritics, and grapheme clusters
  • Smart Word Detection - Uses regex patterns instead of simple whitespace splitting
  • Null Safety - Fully null-safe and compatible with Dart 3.0+
  • Zero Dependencies - Only depends on the characters package for grapheme support

Installation

Add to your pubspec.yaml:

dependencies:
  stringr: ^1.2.0

Quick Start

import 'package:stringr/stringr.dart';

void main() {
  // Case conversions
  print('hello world'.toCamelCase);        // helloWorld
  print('hello world'.toSnakeCase);        // hello_world
  print('hello world'.toKebabCase);        // hello-world
  print('hello world'.toPascalCase);       // HelloWorld

  // Smart word extraction
  print('XMLHttpRequest'.camelCase());     // xmlHttpRequest
  print('/path/to/file'.camelCase());      // pathToFile
  print('2infinity&beyond'.words());       // [2, infinity, beyond]
}

Unicode & Non-Latin Support

stringr shines with complex Unicode strings:

// Non-Latin scripts
print('полет птицы'.kebabCase());          // полет-птицы
print('La variété française'.prune(12));   // La variété

// Diacritics and latinization
print('café'.latinize());                  // cafe
print('anglikonų šiurkščios'.latinize());  // anglikonu siurkscios

// Grapheme-aware operations
print('café'.countGrapheme());             // 4 (not 5!)
print('👨‍👩‍👧‍👦'.reverse());                      // 👨‍👩‍👧‍👦 (family emoji stays intact)

API Overview

Case Manipulation
Method Description Example
camelCase() Convert to camelCase 'foo bar''fooBar'
snakeCase() Convert to snake_case 'foo bar''foo_bar'
kebabCase() Convert to kebab-case 'foo bar''foo-bar'
titleCase() Capitalize each word 'foo bar''Foo Bar'
capitalize() Capitalize first char 'foo''Foo'
swapCase() Toggle case 'FoO''fOo'
String Chopping
Method Description Example
truncate(n) Truncate to n chars 'hello world''hello...'
prune(n) Truncate without breaking words 'hello world''hello'
first(n) Get first n chars 'hello''hel'
last(n) Get last n chars 'hello''llo'
slice(start, end) Extract substring 'hello''ell'
Counting
Method Description Example
countGrapheme() Count visible characters 'café'4
countOccurrences(s) Count substring occurrences 'banana'.countOccurrences('a')3
countWords() Count words 'hello world'2
countWhere(fn) Count matching chars Custom predicate
Manipulation
Method Description Example
reverse() Reverse (grapheme-aware) 'hello''olleh'
slugify() URL-friendly slug 'Hello World!''hello-world'
latinize() Remove diacritics 'café''cafe'
insert(s, i) Insert at position 'hllo'.insert('e', 1)'hello'
Escaping
Method Description
escapeHtml() Escape HTML entities
unescapeHtml() Unescape HTML entities
escapeRegExp() Escape regex special chars

Why stringr?

Most string libraries fail with complex Unicode. stringr handles:

  • Grapheme clusters: 'café' is 4 characters, not 5
  • Surrogate pairs: Emoji and special symbols work correctly
  • Non-Latin scripts: Cyrillic, Greek, accented Latin, and more
  • Smart word detection: 'XMLHttpRequest'['XML', 'Http', 'Request']

Contributing

Contributions are welcome! Please read our Contributing Guide for details.

Project Health

License

MIT License - see LICENSE for details.