[实例]UWP之正则获取文本中的超链接到剪切板并粘贴

4 篇文章 0 订阅
2 篇文章 0 订阅

MainPage.xaml中

<StackPanel Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
        <TextBlock  Height="200" TextWrapping="Wrap"  Loaded="TextBlock_Loaded" Tapped="TextBlock_Tapped">
            dsdsdsdsadsadddsdsdsdhttp://www.baidu.com dsadsadsadsahttps://www.baidu.com1 daewqewqeqwewqdaewq
            dsdsdsdsadsadddsdsdsdhttp://www.baidu.com6 dsadsadsadsahttps://www.baidu.com2 daewqewqeqwewqdaewq
            dsdsdsdsadsadddsdsdsdhttp://www.baidu.com7 dsadsadsadsahttps://www.baidu.com3 daewqewqeqwewqdaewq
            dsdsdsdsadsadddsdsdsdhttp://www.baidu.com8 dsadsadsadsahttps://www.baidu.com4 daewqewqeqwewqdaewq
            dsdsdsdsadsadddsdsdsdhttp://www.baidu.com9 dsadsadsadsahttps://www.baidu.com5 daewqewqeqwewqdaewq
            <FlyoutBase.AttachedFlyout>
                <Flyout x:Name="HyperText" Placement="Full">
                    <StackPanel>
                        <ListView Name="ttt" SelectionChanged="ttt_SelectionChanged"/>
                    </StackPanel>
                </Flyout>
            </FlyoutBase.AttachedFlyout>
        </TextBlock>

        <StackPanel Orientation="Horizontal">
            <Button Content="粘贴超链接" Click="Button_Click" />
            <TextBox  Name="hhh"/>
        </StackPanel>
        

    </StackPanel>

MainPage.cs中

using System.Text.RegularExpressions;
using Windows.ApplicationModel.DataTransfer;        
   private void TextBlock_Loaded(object sender, RoutedEventArgs e)
        {
            string str = ((TextBlock)sender).Text.ToString().ToLower();
            string pattern = @"https?://[^\s]+\s";
            MatchCollection mc = Regex.Matches(str, pattern);

            if(mc.Count > 0)
            {
                ttt.Items.Clear();
                foreach (Match t in mc)
                {
                    ttt.Items.Add(t.Value.ToString().Trim());
                }
            }

        }



        private void ttt_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            var ddd = (ListView)sender;
            DataPackage dp = new DataPackage();
            dp.SetText(ddd.SelectedItem.ToString());
            Clipboard.SetContent(dp);
            HyperText.Hide();
        }

        private void TextBlock_Tapped(object sender, TappedRoutedEventArgs e)
        {
            var fff = (TextBlock)sender;
            FlyoutBase.ShowAttachedFlyout(fff);
        }

        private async void Button_Click(object sender, RoutedEventArgs e)
        {
            DataPackageView con = Clipboard.GetContent();
            
            if (con.Contains(StandardDataFormats.Text))
            {
                hhh.Text = await con.GetTextAsync();
            }
        }



实现的效果如下:


知识链接:win10 UWP 剪贴板 Clipboard 


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值