#string #dart
#строка #dart
Вопрос:
У меня есть следующая строка https://www.something.com/api/mmmm/media/mhm/something.jpg и я хочу обрезать эту строку, чтобы она стала https://www.something.com/media/mhm/something.jpg по сути, я хочу, чтобы он был динамическим, поэтому я не хочу жестко кодировать его, потому что URL-адрес не будет неизменным вечно, эта конкретная часть изменится. Другими словами, я хочу удалить все из /api/, пока оно не достигнет /media/, и, похоже, я не могу этого сделать.
Ответ №1:
Вы можете использовать Uri.parse
для анализа URL-адреса и цикла, чтобы сегменты пути uri создавали новый uri с сегментами пути, которые вы хотите сохранить, например:
void main() {
var uri =
Uri.parse('https://www.something.com/api/mmmm/media/mhm/something.jpg');
var exclude = false;
var newPath = <String>[];
for (var seg in uri.pathSegments) {
if (seg == 'api') {
exclude = true;
continue;
}
if (seg == 'media') {
exclude = false;
}
if (!exclude) {
newPath.add(seg);
}
}
var newUri = uri.replace(pathSegments: newPath);
print(newUri); //Prints https://www.something.com/media/mhm/something.jpg
}
Ответ №2:
Альтернативным решением было бы использовать регулярное выражение, подобное этому:
void main() {
print(
trimString('https://www.something.com/api/mmmm/media/mhm/something.jpg'));
// https://www.something.com/media/mhm/something.jpg
print(trimString(
'https://www.something.com/api/AlotOfStrangeThings/complateNonsense/amp;amp;amp;amp;amp;/media/mhm/something.jpg'));
// https://www.something.com/media/mhm/something.jpg
}
String trimString(String string) =>
string.replaceAll(RegExp(r'/api/(.*)/media/'), '/media/');
Комментарии:
1. Спасибо всем, я действительно ценю это!