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);
}