- Added additional `String` manipulation utilities, including:
  - `capitalizeWords`: Capitalizes the first letter of each word in the string.
  - `spacePascalCase`: Adds spaces between words in a PascalCase string.

Signed-off-by: Hans Kokx <hans.kokx@hackberry.se>
This commit is contained in:
Hans Kokx
2024-11-06 12:31:16 +01:00
parent c17cd7f6a3
commit 2c13b6fe72
3 changed files with 94 additions and 10 deletions
+38 -10
View File
@@ -3,7 +3,7 @@
import "package:arcane_helper_utils/arcane_helper_utils.dart";
void main() {
// DateTime
// * DateTime
final DateTime dateTime = DateTime(2019, 1, 1, 13, 45);
print(dateTime.toIso8601String()); // 2019-01-01T13:45:00.0
print(dateTime.startOfHour.toIso8601String()); // 2019-01-01T13:00:00.0
@@ -19,31 +19,59 @@ void main() {
print("Yesterday: $yesterday");
print("Tomorrow: $tomorrow");
// Strings
// * Strings
const String? nullString = null;
const String emptyString = " ";
const String nonEmptyString = "Hello World!";
// Nullability
print("${nullString.isNullOrEmpty}"); // true
print("${emptyString.isNullOrEmpty}"); // true
print("${nonEmptyString.isNullOrEmpty}"); // false
// Split a string by x characters
const String text = "DartLang";
final List<String> result = text.splitByLength(3);
print("$result"); // ["Dar", "tLa", "ng"]
// Capitalize a string
const String lowercase = "hello";
final String capitalized = lowercase.capitalize;
print(capitalized); // "Hello"
final list = [1, 2, 2, 3, 4, 4];
final uniqueList = list.unique();
print(uniqueList); // Output: [1, 2, 3, 4]
final people = [
Person(id: 1, name: "Alice"),
Person(id: 2, name: "Bob"),
Person(id: 1, name: "Alice Duplicate"),
// Capitalize words in a string
const String lowercaseWords = "hello world";
final String capitalizedWords = lowercaseWords.capitalizeWords;
print(capitalizedWords); // "Hello World"
// Space out PascalCase words
const String pascalCase = "ArcaneHelperUtils";
final String spacedOut = pascalCase.spacePascalCase;
print(spacedOut); // "Arcane Helper Utils";
// * Lists
final List<Person> people = [
const Person(id: 1, name: "Alice"),
const Person(id: 2, name: "Bob"),
const Person(id: 1, name: "Alice Duplicate"),
];
final uniquePeople = people.unique((person) => person.id);
// Process the list into a new list item. Original list is preserved.
final List<Person> uniquePeople = people.unique((person) => person.id, false);
print(
people.map((p) => p.name),
// Output: ['Alice', 'Bob', 'Alice Duplicate']
);
print(uniquePeople.map((p) => p.name)); // Output: ['Alice', 'Bob']
// Process the existing list, in place
people.unique((person) => person.id);
print(people.map((p) => p.name)); // Output: ['Alice', 'Bob']
}
class Person {
final int id;
final String name;
const Person({required this.id, required this.name});
}