Dart Utils Package

๐Ÿ“‹ ๋ชฉ์ฐจ



๐Ÿ“ ๊ฐœ์š”

์„ค๋ช…

  • ๋‚ด๊ฐ€ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ๋งŒ๋“  ์ž…๋‹ˆ๋‹ค.
  • ํ•„์š”ํ•œ ๊ธฐ๋Šฅ์ด ์žˆ๋‹ค๋ฉด ๋งˆ์Œ๋Œ€๋กœ ์‚ฌ์šฉํ•˜์…”๋„ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค.

์˜์˜

  • ๊ฐœ๋ฐœ ํŽธ์˜์„ฑ์„ ํ–ฅ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์„œ๋กœ ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ์— ๋ฒ”์šฉ์ ์œผ๋กœ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ํ˜‘์—… ์‹œ ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ๊ฐ์ž ๊ฐœ๋ฐœํ•˜๋Š” ๋“ฑ์˜ ๊ฐœ๋ฐœ๋ ฅ ๋‚ญ๋น„๋ฅผ ์ตœ์†Œํ™” ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ”ง ๊ธฐ๋Šฅ

๋…ผ๋ฆฌ ์ž๋ฃŒํ˜• bool ๊ด€๋ จ

Extension

  • toInt: int- Getter

    ๋…ผ๋ฆฌ ์ž๋ฃŒํ˜• bool ์„ ์ •์ˆ˜ ์ž๋ฃŒํ˜• int ๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

    void main() {
      print(true.toInt);  // 1
      print(false.toInt); // 0
    }
    

๋‚ ์งœ ๋ฐ ์‹œ๊ฐ„ DateTime ๊ด€๋ จ

Extension

  • toMillis: int - Getter

    Unix Epoch ๊ธฐ์ค€ ๋ฐ€๋ฆฌ์ดˆ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

    void main() {
      print(DateTime.now().toMillis); // 1732804031349
    }
    
  • ignoreTime: DateTime - Getter

    DateTime ์˜ ์‹œ๊ฐ„๋ถ€๋ฅผ ์ œ์™ธํ•ฉ๋‹ˆ๋‹ค.

    void main() {
      print(DateTime.now().ignoreTime); // 2024-11-28 00:00:00.000
    }
    
  • age: int - Getter

    ํ•ด๋‹น ์‹œ๊ฐ„์— ํƒœ์–ด๋‚œ ์‚ฌ๋žŒ์˜ ๋งŒ ๋‚˜์ด๋ฅผ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค.

    void main() {
      print(DateTime(2000, 01, 01).age); // 25  (2025๋…„ ๊ธฐ์ค€) 
      print(DateTime(1976, 03, 18).age); // 49  (2025๋…„ ๊ธฐ์ค€) 
    }
    
  • generation: int - Getter

    ํ•ด๋‹น ์‹œ๊ฐ„์— ํƒœ์–ด๋‚œ ์‚ฌ๋žŒ์˜ ์„ธ๋Œ€๋ฅผ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค.

    void main() {
      print(DateTime(2000, 01, 01).generation); // 20  (2025๋…„ ๊ธฐ์ค€) 
      print(DateTime(1976, 03, 18).generation); // 40  (2025๋…„ ๊ธฐ์ค€)
    }
    
  • wd: Weekday - Getter

ํ•ด๋‹น ๋‚ ์งœ์˜ ์š”์ผ Weekday ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

void main() {
print(DateTime.now().wd);  // Weekday.thursday
}

Enum

  • Weekday

    void main() {
      var weekday = Weekday.monday;
      print(weekday.short);        // m
      print(weekday.middle);       // mon
      print(weekday.long);         // monday
      print(weekday.shortKorean);  // ์›”
      print(weekday.longKorean);   // ์›”์š”์ผ
    }
    

๋ฐฐ์—ด List ๊ด€๋ จ

Extension

  • addIf(bool, T): void: Method

    ๋งค๊ฐœ๋ณ€์ˆ˜

์ž๋ฃŒํ˜• ๋ณ€์ˆ˜๋ช… ์„ค๋ช…
bool condition ์กฐ๊ฑด์‹
T element ์ถ”๊ฐ€ํ•  ์š”์†Œ
void main() {
List<int> list = [0];
list.addIf(list.sum < 5, list.last + 1);
print(list);  // [0, 1]
list.addIf(list.sum < 5, list.last + 1);
print(list);  // [0, 1, 2]
list.addIf(list.sum < 5, list.last + 1);
print(list);  // [0, 1, 2, 3]
list.addIf(list.sum < 5, list.last + 1);
print(list);  // [0, 1, 2, 3]
}

์ˆซ์ž num, int, double ๊ด€๋ จ

Extension

Num List Extension
  • sum: num - Getter

    ๋ฆฌ์ŠคํŠธ์˜ ๋ชจ๋“  ์š”์†Œ๋ฅผ ํ•ฉ์‚ฐํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

    void main() {
      print([1, 2, 3].sum); // 6
      print([].sum);        // 0
    }
    
  • average: num - Getter

    ๋ฆฌ์ŠคํŠธ์˜ ์š”์†Œ๋“ค์˜ ํ‰๊ท ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๋ฆฌ์ŠคํŠธ๊ฐ€ ๋น„์–ด ์žˆ๋Š” ๊ฒฝ์šฐ 0 ์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

    void main() {
      print([1, 2, 3].average); // 2
      print([].average);        // 0
    }
    
Int Extension
  • toBool: bool- Getter

    ์ •์ˆ˜ ์ž๋ฃŒํ˜• int ์„ ๋…ผ๋ฆฌ ์ž๋ฃŒํ˜• bool ๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

    void main() {
      print(1.toBool);   // true
      print(0.toBool);   // false
      print(-50.toBool); // true
    }
    
  • asCurrency: String - Getter

    ์ •์ˆ˜๋ฅผ ์„ธ ์ž๋ฆฌ๋งˆ๋‹ค ์‰ผํ‘œ๋กœ ๊ตฌ๋ถ„๋œ ํ†ตํ™” ํ˜•์‹์˜ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

    void main() {
      print(123456789.asCurrency); // 123,456,789
      print(1000.asCurrency);      // 1,000
    }
    
  • asKorean: String - Getter

    ์ •์ˆ˜๋ฅผ ํ•œ๊ธ€ ์ˆซ์ž๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

    void main() {
      print(123.asKorean); // ์ผ์ด์‚ผ
      print(4567.asKorean); // ์‚ฌ์˜ค์œก์น 
    }
    
  • asHanja({bool gajeunja = false}): String - Method

    ๋งค๊ฐœ๋ณ€์ˆ˜

    ์ •์ˆ˜๋ฅผ ํ•œ์ž๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ฐ„์ฒด์ž๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

    gajeunja ๊ฐ€ true ๊ฐ’์„ ๊ฐ€์งˆ ๊ฒฝ์šฐ ๊ฐ–์€์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

์ž๋ฃŒํ˜• ๋ณ€์ˆ˜๋ช… ์„ค๋ช…
bool gajeunja ๊ฐ–์€์ž ๋ฐ˜ํ™˜ ์—ฌ๋ถ€
void main() {
print(123.asHanja());                 // ไธ€ไบŒไธ‰
print(123.asHanja(gajeunja: true));   // ๅฃน่ฒณๅƒ
}
  • asKoreanWithUnits({bool ignoreIl = true}): String - Method

    ์ •์ˆ˜๋ฅผ ํ•œ๊ธ€ ์ˆซ์ž์™€ ๋‹จ์œ„(์‹ญ, ๋ฐฑ, ์ฒœ ๋“ฑ)๋ฅผ ํฌํ•จํ•œ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

    ignoreIl ์ด true ๊ฐ’์„ ๊ฐ€์งˆ ๊ฒฝ์šฐ ์–ด์ƒ‰ํ•œ ์ผ ์„ ์ƒ๋žตํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. (๊ธฐ๋ณธ๊ฐ’: true)

    void main() {
      print(11111.asKoreanWithUnits());                // ์ผ๋งŒ์ฒœ๋ฐฑ์‹ญ์ผ
      print(11111.asKoreanWithUnits(ignoreIl: false)); // ์ผ๋งŒ์ผ์ฒœ์ผ๋ฐฑ์ผ์‹ญ์ผ
    }
    
  • asKoreanCurrency({bool ignoreIl = false, String prefix = '๊ธˆ ', String suffix = ' ์›์ •'}): String - Method

    ์ •์ˆ˜๋ฅผ ํ•œ๊ธ€ ์ˆซ์ž์™€ ํ†ตํ™” ๋‹จ์œ„๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

    ignoreIl ์ด true ๊ฐ’์„ ๊ฐ€์งˆ ๊ฒฝ์šฐ ์–ด์ƒ‰ํ•œ ์ผ ์„ ์ƒ๋žตํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. (๊ธฐ๋ณธ๊ฐ’: false)
    ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ธˆ ~ ์›์ • ํ˜•์‹์„ ์‚ฌ์šฉํ•˜๋ฉฐ, ์ ‘๋‘์‚ฌ prefix ์™€ ์ ‘๋ฏธ์‚ฌ suffix ๋ฅผ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    void main() {
      print(1234.asKoreanCurrency());     // ๊ธˆ ์ผ์ฒœ์ด๋ฐฑ์‚ผ์‹ญ์‚ฌ ์›์ •
      print(10000000.asKoreanCurrency()); // ๊ธˆ ์ผ์ฒœ๋งŒ ์›์ •
    }
    
  • asHanjaCurrency({bool gajeunja = true, bool ignoreIl = false, String prefix = '้‡‘ ', String suffix = ' ์›ๆ•ด'}): String - Method

    ์ •์ˆ˜๋ฅผ ํ•œ์ž ์ˆซ์ž์™€ ํ†ตํ™” ๋‹จ์œ„๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

    ignoreIl ์ด true ๊ฐ’์„ ๊ฐ€์งˆ ๊ฒฝ์šฐ ์–ด์ƒ‰ํ•œ ไธ€ ๋˜๋Š” ๅฃน ์„ ์ƒ๋žตํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. (๊ธฐ๋ณธ๊ฐ’: false)
    ๊ธฐ๋ณธ์ ์œผ๋กœ ้‡‘ ~ ์›ๆ•ด ํ˜•์‹์„ ์‚ฌ์šฉํ•˜๋ฉฐ, ์ ‘๋‘์‚ฌ prefix ์™€ ์ ‘๋ฏธ์‚ฌ suffix ๋ฅผ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    gajeunja ๊ฐ€ true ๊ฐ’์„ ๊ฐ€์งˆ ๊ฒฝ์šฐ ๊ฐ–์€์ž๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

    void main() {
      print(1234.asHanjaCurrency());                    // ้‡‘ ๅฃนไปŸ่ฒณไฝฐๅƒๆ‹พ่‚† ์›ๆ•ด
      print(1234.asHanjaCurrency(gajeunja: false));     // ้‡‘ ไธ€ๅƒไบŒ็™พไธ‰ๅๅ›› ์›ๆ•ด
      print(1234.asHanjaCurrency(ignoreIl: true));      // ้‡‘ ไปŸ่ฒณไฝฐๅƒๆ‹พ่‚† ์›ๆ•ด
      print(10000000.asHanjaCurrency());                // ้‡‘ ๅฃนไปŸ่ฌ ์›ๆ•ด
      print(10000000.asHanjaCurrency(gajeunja: false)); // ้‡‘ ไธ€ๅƒ่ฌ ์›ๆ•ด
      print(10000000.asHanjaCurrency(ignoreIl: true));  // ้‡‘ ไปŸ่ฌ ์›ๆ•ด
    }
    

Class

NumRange

์ˆซ์ž ์ž๋ฃŒํ˜• num ์˜ ๋ฒ”์œ„์— ๋Œ€ํ•œ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์ƒ์„ฑ์ž ๋งค๊ฐœ๋ณ€์ˆ˜

์ž๋ฃŒํ˜• ๋ณ€์ˆ˜๋ช… ์„ค๋ช…
T start ์ตœ์†Ÿ๊ฐ’
T end ์ตœ๋Œ“๊ฐ’
List<NumRange(T)> excludes ์ œ์™ธํ•  ๋ฒ”์œ„ ๋ฆฌ์ŠคํŠธ
var range = NumRange(1, 10);
var rangeExcludes = NumRange(1, 10, excludes: [
  NumRange(3.7, 6.5),
  NumRange(8.8, 9.1),
]);
  • start: num - Getter

    ์ตœ์†Ÿ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

    print(range.start);         // 1
    print(rangeExcludes.start); // 1
    
  • end: num - Getter

    ์ตœ๋Œ“๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

    print(range.end);         // 10
    print(rangeExcludes.end); // 10
    
  • difference: num - Getter

    ์ตœ์†Ÿ๊ฐ’๊ณผ ์ตœ๋Œ“๊ฐ’์˜ ์ฐจ์ด๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

    print(range.difference);         // 9.0
    print(rangeExcludes.difference); // 9.0
    
  • length: T - Getter

    ๋ฒ”์œ„์˜ ๊ธธ์ด๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

    ์ด๋•Œ excludes ์— ํฌํ•จ๋˜๋Š” ๋ฒ”์œ„๋Š” ์ œ์™ธ๋ฉ๋‹ˆ๋‹ค.

    print(range.length);         // 9.0
    print(rangeExcludes.length); // 5.900000000000001
    
  • contains(T): bool - Method

    ๋งค๊ฐœ๋ณ€์ˆ˜

์ž๋ฃŒํ˜• ๋ณ€์ˆ˜๋ช… ์„ค๋ช…
T num ๋ฒ”์œ„ ํฌํ•จ ์—ฌ๋ถ€๋ฅผ ํŒ๋‹จํ•  ์ˆซ์ž
print(range.contains(3.8));         // true
print(range.contains(7.6));         // true
print(rangeExcludes.contains(3.8)); // false
print(rangeExcludes.contains(7.6)); // true
  • subRanges: List<NumRange> - Getter

    excludes ๋ฅผ ์ œ์™ธํ•œ ๋ถ€๋ถ„๋ฒ”์œ„ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

    print(range.subRanges);          // [NumRange(1, 10)]
    print(rangeExcludes.subRanges);  // [NumRange(1, 3.7), NumRange(6.5, 8.8), NumRange(9.1, 10)]
    
IntRange, DoubleRange

์œ„์™€ ๋™์ผํ•ฉ๋‹ˆ๋‹ค.

๋ฌธ์ž์—ด String ๊ด€๋ จ

Enum

์ด๋ฆ„ ์˜ˆ์‹œ
lowerSnakeCase 'hello_world'
upperSnakeCase 'HELLO_WORLD'
lowerSkewerCase 'hello-world'
upperSkewerCase 'HELLO-WORLD'
pascalCase 'HelloWorld'
camelCase 'helloWorld'
titleCase 'Hello World'
lowerCase 'hello world'
upperCase 'HELLO WORLD'

Extension

String Extension
  • reversed: String - Getter

    ๋ฐ˜์ „๋œ ๋ฌธ์ž์—ด์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

    void main() {
      print('Hello World'.reversed);  // dlroW olleH 
    }
    
Korean Extension
  • choseong: String - Getter

    ํ•œ๊ธ€ ๋ฌธ์ž์—ด์˜ ์ดˆ์„ฑ์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

  • jungseong: String - Getter

    ํ•œ๊ธ€ ๋ฌธ์ž์—ด์˜ ์ค‘์„ฑ์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

  • jongseong: String - Getter

    ํ•œ๊ธ€ ๋ฌธ์ž์—ด์˜ ์ข…์„ฑ์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

  • hasBatchim: bool - Getter

    1์Œ์ ˆ ๋ฌธ์ž์˜ ๋ฐ›์นจ ์กด์žฌ ์—ฌ๋ถ€๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

    ์ฃผ์˜: 1์Œ์ ˆ ๋ฌธ์ž๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. (ex. ๋•…, ๋ณ„, ํ•ด)

  • puleossugi: String - Getter

    ํ•œ๊ธ€ ๋ฌธ์ž์—ด์„ ํ’€์–ด์“ฐ๊ธฐํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

  • moassugi: String - Getter

    ํ•œ๊ธ€ ๋ฌธ์ž์—ด์„ ๋ชจ์•„์“ฐ๊ธฐํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

  • eunNeun: String - Getter

    ํ•œ๊ธ€ ๋ฌธ์ž์—ด์— ์ด์–ด์งˆ ๋ณด์กฐ์‚ฌ(์€/๋Š”)๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

  • eunNeunName: String - Getter

    ํ•œ๊ธ€ ์ด๋ฆ„์— ์ด์–ด์งˆ ๋ณด์กฐ์‚ฌ(์ด๋Š”/๋Š”)๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

  • iGa: String - Getter

    ํ•œ๊ธ€ ๋ฌธ์ž์—ด์— ์ด์–ด์งˆ ์ฃผ๊ฒฉ์กฐ์‚ฌ(์ด/๊ฐ€)๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

  • iGaName: String - Getter

    ํ•œ๊ธ€ ์ด๋ฆ„์— ์ด์–ด์งˆ ์ฃผ๊ฒฉ์กฐ์‚ฌ(์ด๊ฐ€/๊ฐ€)๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

  • eulReul: String - Getter

    ํ•œ๊ธ€ ๋ฌธ์ž์—ด์— ์ด์–ด์งˆ ๋ชฉ์ ๊ฒฉ์กฐ์‚ฌ(์„/๋ฅผ)๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

  • eulReulName: String - Getter

    ํ•œ๊ธ€ ์ด๋ฆ„์— ์ด์–ด์งˆ ๋ชฉ์ ๊ฒฉ์กฐ์‚ฌ(์ด๋ฅผ/๋ฅผ)๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

  • roEuro: String - Getter

    ์žฅ์†Œ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ํ•œ๊ธ€ ๋ฌธ์ž์—ด์— ์ด์–ด์งˆ ์กฐ์‚ฌ(์œผ๋กœ/๋กœ)๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

  • withEunNeun: String - Getter

    ํ•œ๊ธ€ ๋ฌธ์ž์—ด์— ๋ณด์กฐ์‚ฌ(์€/๋Š”)๋ฅผ ์ด์–ด ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

  • withEunNeunName: String - Getter

    ํ•œ๊ธ€ ์ด๋ฆ„์— ๋ณด์กฐ์‚ฌ(์ด๋Š”/๋Š”)๋ฅผ ์ด์–ด ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

  • withIGa: String - Getter

    ํ•œ๊ธ€ ๋ฌธ์ž์—ด์— ์ฃผ๊ฒฉ์กฐ์‚ฌ(์ด/๊ฐ€)๋ฅผ ์ด์–ด ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

  • withIGaName: String - Getter

    ํ•œ๊ธ€ ์ด๋ฆ„์— ์ฃผ๊ฒฉ์กฐ์‚ฌ(์ด๊ฐ€/๊ฐ€)๋ฅผ ์ด์–ด ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

  • withEulReul: String - Getter

    ํ•œ๊ธ€ ๋ฌธ์ž์—ด์— ๋ชฉ์ ๊ฒฉ์กฐ์‚ฌ(์„/๋ฅผ)๋ฅผ ์ด์–ด ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

  • withEulReulName: String - Getter

    ํ•œ๊ธ€ ์ด๋ฆ„์— ๋ชฉ์ ๊ฒฉ์กฐ์‚ฌ(์ด๋ฅผ/๋ฅผ)๋ฅผ ์ด์–ด ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

  • withRoEuro: String - Getter

    ์žฅ์†Œ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ํ•œ๊ธ€ ๋ฌธ์ž์—ด์— ์กฐ์‚ฌ(์œผ๋กœ/๋กœ)๋ฅผ ์ด์–ด ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

  • isJaeum: String - Getter

    ๊ธธ์ด๊ฐ€ 1์ธ ํ•œ๊ธ€ ๋ฌธ์ž๊ฐ€ ์ž์Œ์ธ์ง€ ์—ฌ๋ถ€๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

  • isMoeum: String - Getter

    ๊ธธ์ด๊ฐ€ 1์ธ ํ•œ๊ธ€ ๋ฌธ์ž๊ฐ€ ๋ชจ์Œ์ธ์ง€ ์—ฌ๋ถ€๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

  • isEumjeol: String - Getter

    ๊ธธ์ด๊ฐ€ 1์ธ ํ•œ๊ธ€ ๋ฌธ์ž๊ฐ€ 1์Œ์ ˆ์ธ์ง€ ์—ฌ๋ถ€๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

  • isHangeul: String - Getter

    ๋ฌธ์ž์—ด์ด ํ•œ๊ธ€์ธ์ง€ ์—ฌ๋ถ€๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

  • hasHangeul: String - Getter

    ๋ฌธ์ž์—ด์˜ ํ•œ๊ธ€ ํฌํ•จ ์—ฌ๋ถ€๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

  • hasSeparatedJaeumOrMoeum: String - Getter

    ๋ฌธ์ž์—ด์— ๋…๋ฆฝ์ ์ธ ์ž๋ชจ ์กด์žฌ ์—ฌ๋ถ€๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

  • containsHangeul(other: String): bool - Method

    ๋ฌธ์ž์—ด์— ํ•œ๊ธ€ ๋ฌธ์ž์—ด string ํฌํ•จ ์—ฌ๋ถ€๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

์‚ฌ์šฉ๋ฒ•

void main() {
  print('๊ณ ์–‘์ด'.choseong);                 // ใ„ฑใ…‡ใ…‡
  print('๊ณ ์–‘์ด'.jungseong);                // ใ…—ใ…‘ใ…ฃ
  print('๊ณ ์–‘์ด'.jongseong);                //  ใ…‡

  print('๋ฐ”'.hasBatchim);                  // false
  print('๋ฐ›'.hasBatchim);                  // true

  print('๊ณ ์–‘์ด'.puleossugi);               // ใ„ฑใ…—ใ…‡ใ…‘ใ…‡ใ…‡ใ…ฃ
  print('ใ„ฑใ…—ใ…‡ใ…‘ใ…‡ใ…‡ใ…ฃ'.moassugi);           // ๊ณ ์–‘์ด

  print('๊น€๋ฐฅ'.eunNeun);                   // ์€
  print('๋–ก๋ณถ์ด'.eunNeun);                  // ๋Š”
  print('๋ฏผ์ฒ '.eunNeunName);               // ์ด๋Š”
  print('๊น€๋ฐฅ'.iGa);                       // ์ด
  print('๋–ก๋ณถ์ด'.iGa);                      // ๊ฐ€
  print('๋ฏผ์ฒ '.iGaName);                   // ์ด๊ฐ€
  print('๊น€๋ฐฅ'.eulReul);                   // ์„
  print('๋–ก๋ณถ์ด'.eulReul);                  // ๋ฅผ
  print('๋ฏผ์ฒ '.eulReulName);               // ์ด๋ฅผ
  print('ํ•™๊ต'.roEuro);                    // ๋กœ
  print('๋ณ‘์›'.roEuro);                    // ์œผ๋กœ

  print('๊น€๋ฐฅ'.withEunNeun);               // ๊น€๋ฐฅ์€
  print('๋–ก๋ณถ์ด'.withEunNeun);             // ๋–ก๋ณถ์ด๋Š”
  print('๋ฏผ์ฒ '.withEunNeunName);           // ๋ฏผ์ฒ ์ด๋Š”
  print('๊น€๋ฐฅ'.withIGa);                   // ๊น€๋ฐฅ์ด
  print('๋–ก๋ณถ์ด'.withIGa);                  // ๋–ก๋ณถ์ด๊ฐ€
  print('๋ฏผ์ฒ '.withIGaName);               // ๋ฏผ์ฒ ์ด๊ฐ€
  print('๊น€๋ฐฅ'.withEulReul);               // ๊น€๋ฐฅ์„
  print('๋–ก๋ณถ์ด'.withEulReul);              // ๋–ก๋ณถ์ด๋ฅผ
  print('๋ฏผ์ฒ '.withEulReulName);           // ๋ฏผ์ฒ ์ด๋ฅผ
  print('ํ•™๊ต'.withRoEuro);                // ํ•™๊ต๋กœ
  print('๋ณ‘์›'.withRoEuro);                // ๋ณ‘์›์œผ๋กœ

  print('ใ„ฑ'.isJaeum);                     // true
  print('ใ…'.isJaeum);                     // false
  print('๊ฐ€'.isJaeum);                     // false

  print('ใ„ฑ'.isMoeum);                     // false
  print('ใ…'.isMoeum);                     // true
  print('๊ฐ€'.isMoeum);                     // false

  print('ใ„ฑ'.isEumjeol);                   // false
  print('ใ…'.isEumjeol);                   // false
  print('๊ฐ€'.isEumjeol);                   // true

  print('ใ„ฑ'.isHangeul);                   // true
  print('ใ…'.isHangeul);                   // true
  print('๊ฐ€'.isHangeul);                   // true
  print('๊ฐ•์•„์ง€'.isHangeul);                // true
  print('๊ฐ• ์•„์ง€'.isHangeul);               // true
  print('Dog'.isHangeul);                 // false
  print('Dog๊ฐ•์•„์ง€'.isHangeul);             // false

  print('์•ˆ๋…• World'.hasHangeul);          // true
  print('Hello World'.hasHangeul);        // false

  print('์•ˆ๋…•ใ…Ž'.hasSeparatedJaeumOrMoeum); // true
  print('์•ˆ๋…•'.hasSeparatedJaeumOrMoeum);  // false

  print('์„ธ์ƒ'.containsHangeul('ใ……'));      // true
  print('์„ธ์ƒ'.containsHangeul('์„ธ'));      // true
  print('์„ธ์ƒ'.containsHangeul('์…‹'));      // true
  print('์„ธ์ƒ'.containsHangeul('์„ธใ……'));     // true
  print('์„ธ์ƒ'.containsHangeul('์„ธ์‚ฌ'));     // true
  print('์„ธ์ƒ'.containsHangeul('์„ธ์ƒ'));     // true

  print('์„ธ์ƒ'.contains('ใ……'));             // false
  print('์„ธ์ƒ'.contains('์„ธ'));             // true
  print('์„ธ์ƒ'.contains('์…‹'));             // false
  print('์„ธ์ƒ'.contains('์„ธใ……'));            // false
  print('์„ธ์ƒ'.contains('์„ธ์‚ฌ'));            // false
  print('์„ธ์ƒ'.contains('์„ธ์ƒ'));            // true
}

Class

StringCaseConverter ๋ฌธ์ž์—ด ํ˜•์‹ ๋ณ€ํ™˜๊ธฐ

์ƒ์„ฑ์ž ๋งค๊ฐœ๋ณ€์ˆ˜

์ž๋ฃŒํ˜• ๋ณ€์ˆ˜๋ช… ์„ค๋ช…
String value ๋ณ€ํ™˜ํ•  ์ตœ์ดˆ ํ…์ŠคํŠธ

์‚ฌ์šฉ๋ฒ•

void main() {
  print(StringCaseConverter('hello_world').pascalCase);      // HelloWorld
  print(StringCaseConverter('HELLO_WORLD').pascalCase);      // HelloWorld
  print(StringCaseConverter('hello-world').pascalCase);      // HelloWorld
  print(StringCaseConverter('HELLO-WORLD').pascalCase);      // HelloWorld
  print(StringCaseConverter('HelloWorld').pascalCase);       // HelloWorld
  print(StringCaseConverter('helloWorld').pascalCase);       // HelloWorld
  print(StringCaseConverter('Hello World').pascalCase);      // HelloWorld
  print(StringCaseConverter('hello world').pascalCase);      // HelloWorld
  print(StringCaseConverter('HELLO WORLD').pascalCase);      // HelloWorld

  print(StringCaseConverter('hello_world').lowerSnakeCase);  // hello_world
  print(StringCaseConverter('hello_world').upperSnakeCase);  // HELLO_WORLD
  print(StringCaseConverter('hello_world').lowerSkewerCase); // hello-world
  print(StringCaseConverter('hello_world').upperSkewerCase); // HELLO-WORLD
  print(StringCaseConverter('hello_world').pascalCase);      // HelloWorld
  print(StringCaseConverter('hello_world').camelCase);       // helloWorld
  print(StringCaseConverter('hello_world').titleCase);       // Hello World
  print(StringCaseConverter('hello_world').lowerCase);       // hello world
  print(StringCaseConverter('hello_world').upperCase);       // HELLO WORLD
}

๐Ÿš€ ์‚ฌ์šฉ๋ฒ•

์„ค์น˜

pub.dev (๊ถŒ์žฅ)

dart pub add extify

๋˜๋Š” pubspec.yaml ์— ์ง์ ‘ ์ถ”๊ฐ€:

dependencies:
  extify: ^1.0.1

GitHub

  • ์ตœ์‹ ๋ฒ„์ „

    dependencies:
      extify:
        git:
          url: https://github.com/seungjoonH/extify.git
          ref: latest
    
  • ํŠน์ •๋ฒ„์ „

    dependencies:
      extify:
        git:
          url: https://github.com/seungjoonH/extify.git
          ref: v1.0.1
    

์˜์กด์„ฑ ์„ค์น˜

dart pub get

์ž„ํฌํŠธ

import 'package:extify/util.dart';

ํ•„์š”ํ•œ ๋ชจ๋“ˆ๋งŒ ๊ฐœ๋ณ„์ ์œผ๋กœ ์ž„ํฌํŠธํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค:

import 'package:extify/string.dart';
import 'package:extify/number.dart';

์—…๋ฐ์ดํŠธ

dart pub upgrade extify

๐Ÿ”„ ์—…๋ฐ์ดํŠธ ์ •๋ณด

v1.0.1 (2026-02-12)

  • ์ˆœ์ˆ˜ Dart ํŒจํ‚ค์ง€๋กœ ์ „ํ™˜ (์™ธ๋ถ€ ์˜์กด์„ฑ ์™„์ „ ์ œ๊ฑฐ)
  • toTimestamp โ†’ toMillis ๋ณ€๊ฒฝ
  • hasHangeul, moassugi ๋ฒ„๊ทธ ์ˆ˜์ •

v1.0.0 (2024-12-01)

  • ์ดˆ๊ธฐ ๋ฆด๋ฆฌ์ฆˆ