Xamarin.forms Выделить URL из текста - PullRequest
0 голосов
/ 08 апреля 2020

У меня есть приложение 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...