У меня есть приложение xamarin.forms, которое идентифицирует URL-адреса по меткам и предоставляет щелчок по URL-адресу с помощью жестов диапазона и отображает их в веб-просмотре.
Пример текста, который я связываю с меткой из результата API, выглядит следующим образом:
test
Test description
Test description2
Files :
https://notification-assets.com/1586370078029
https://notification-assets.com/1586370078037
https://notification-assets.com/1586370078063
Как я получаю URL-адреса из этого текста:
urlStr - это мой text conatins URLS
string[] words = urlStr.Split(' ').ToArray();
formattedString = new FormattedString();
foreach (string str in words)
{
if (IsUrl(str))
{
Span span = new Span() { Text = str + " ", TextColor = Color.FromHex("#261fee"), TextDecorations = TextDecorations.Underline, FontAttributes = FontAttributes.Italic };
span.GestureRecognizers.Add(new TapGestureRecognizer()
{
NumberOfTapsRequired = 1,
Command = new Command(async () => {
await PopupNavigation.Instance.PushAsync(new WebviewPopup(span.Text));
})
});
formattedString.Spans.Add(span);
}
else
{
Span span = new Span() { Text = str + " ", TextColor = Color.Gray };
formattedString.Spans.Add(span);
}
}
private static bool IsUrl(string url)
{
string pattern = @"((https?|ftp|file)\://|www.)[A-Za-z0-9\.\-]+(/[A-Za-z0-9\?\&\=;\+!'\(\)\*\-\._~%]*)*";
Regex reg = new Regex(pattern, RegexOptions.Compiled | RegexOptions.IgnoreCase);
return reg.IsMatch(url);
}
Это выделит три URL-адреса, но в Моем веб-просмотре я получу URL-адреса, подобные этому
":\nhttps://notification-assets.com/1586370078029\nhttps://notification-assets.com/1586370078037\nhttps://notification-assets.com/1586370078063\n "
Прежде всего, я не хочу получать 3 URL-адреса, даже если мы нажимаем один из URL-адресов. Во-вторых, как удалить /n
и :
из отформатированного URL-адреса? Как это решить? Любая помощь приветствуется. X