string_splitter
Utility classes for splitting strings and files into parts. Supports streamed parsing for handling long strings and large files.
Usage
string_splitter has 2 libraries: string_splitter for parsing strings, and string_splitter_io for parsing files.
string_splitter
import 'package:string_splitter/string_splitter.dart';
StringSplitter is a utility class with 3 methods: split, stream,
and chunk.
split and stream accept splitters, which defines the character(s)
to split the strings at, and delimiters, which can be provided as a list
of Strings and/or Delimiters, to denote blocks of text which shouldn't
be parsed for splitters.
split
split synchronously splits the provided string at the providedsplitters
and returns a List<String> containing the split parts.
Note: trimParts can be set to true to trim the whitespace around the
returned parts.
final string = '1, 2, 3, 4, 5, <6, 7, 8>, 9, 10';
final stringParts = StringSplitter.split(
string,
splitters: [','],
delimiters: [Delimiter('<', '>')],
trimParts: true,
);
print(stringParts); // ['1', '2', '3', '4', '5', '<6, 7, 8>', '9', '10']
split can alternatively be used as an extension method on String.
final string = '1, 2, 3, 4, 5, <6, 7, 8>, 9, 10';
final stringParts = string.split(
splitters: [','],
delimiters: [Delimiter('<', '>')],
trimParts: true,
);
print(stringParts); // ['1', '2', '3', '4', '5', '<6, 7, 8>', '9', '10']
stream
stream is intended for handling long strings; it splits the provided string
into chunks, streaming the resulting List<String>s as each chunk is parsed.
chunkSize must be provided, which defines the number of characters to limit
each chunk to.
final stream = StringSplitter.stream(
string,
chunkSize: 1000,
splitters: [','],
delimiters: [r'\'],
);
await for (List<String> parts in stream) {
print(parts);
}
stream can alternatively be used as an extension method on String,
referenced as splitStream.
final stream = string.splitStream(
chunkSize: 1000,
splitters: [','],
delimiters: [r'\'],
);
await for (List<String> parts in stream) {
print(parts);
}
chunk
chunk splits strings into chunks of a defined length, returned as a List<String>.
final chunks = StringSplitter.chunk(string, 1000);
chunk can alternatively be used as an extension method on String.
final chunks = string.chunk(1000);
string_splitter_io
import 'package:string_splitter/string_splitter_io.dart';
StringSplitterIo is a utility class with 3 methods: split, splitSync,
and stream; they function the same as StringSplitter's methods, except
they accept Files instead of Strings.
split
split asynchronously reads the provided File as a string and splits it apart
at the provided splitters and returns a Future<List<String>> containing the
split parts when the it completes.
final file = File('path/to/file');
final stringParts = await StringSplitterIo.split(
file,
splitters: [','],
delimiters: [Delimiter('<', '>')],
trimParts: true,
);
split can alternatively be used as an extension method on File.
final file = File('path/to/file');
final stringParts = await file.split(
splitters: [','],
delimiters: [Delimiter('<', '>')],
trimParts: true,
);
splitSync
splitSync synchronously reads the provided File as a string and splits it
apart, returning a List<String> containing the split parts.
final file = File('path/to/file');
final stringParts = StringSplitterIo.splitSync(
file,
splitters: [','],
delimiters: [Delimiter('<', '>')],
trimParts: true,
);
splitSync can alternatively be used as an extension method on File.
final file = File('path/to/file');
final stringParts = file.splitSync(
splitters: [','],
delimiters: [Delimiter('<', '>')],
trimParts: true,
);
stream
stream is intended for splitting large files; it streams the contents of the
provided File, splitting and returning the parsed chunks as they're read.
final file = File('path/to/file');
final stream = StringSplitterIo.stream(
file,
chunkSize: 1000,
splitters: [','],
delimiters: [r'\'],
);
await for (List<String> parts in stream) {
print(parts);
}
stream can alternatively be used as an extension method on File,
referenced as splitStream.
final file = File('path/to/file');
final stream = file.splitStream(
chunkSize: 1000,
splitters: [','],
delimiters: [r'\'],
);
await for (List<String> parts in stream) {
print(parts);
}