【问题标题】:insert urls markup in text string randomly c#在文本字符串中随机插入url标记c#
【发布时间】:2012-01-04 03:00:28
【问题描述】:

我在这里发现了一个与我的问题有点相关的问题:

Inject HTML markup around certain words in a string.

但我想在随机位置插入链接。我的应用程序是一个 Windows 窗体应用程序。在一个框中给出文本,在另一个框中给出 URL。在第三个框中,我希望输出带有随机环绕一些单词的 URL。

可以举个例子,上面给出的文本输出应该是这样的。

但我想在随机位置插入<"a href="http://foo.com">links<"/a>

【问题讨论】:

  • 您是否正在编写应用程序来生成垃圾邮件?为什么要在“随机位置”或“随机环绕某个单词”插入超链接?
  • 请使用一些标点符号,让人们更容易阅读您的信息。对我来说,这听起来像是一个相当愚蠢的应用程序。
  • 也许 toad 正在测试反垃圾邮件过滤器,并想模拟一些邮件。很难找到好的垃圾邮件。

标签: c# html


【解决方案1】:

这是一些伪代码:

//Find the length of the given string you want to insert into
//Foreach link calculate a random number between 0 and String.Length
//Insert that link into that position.

如果您自己尝试过一些东西,请在此处发布,我们可以以此为基础。

【讨论】:

    【解决方案2】:

    好吧,它有点乱,但它是:

        ArrayList usedPositions = new ArrayList();
    
        public Form1()
        {
            InitializeComponent();
        }
    
        private void btnAdd_Click(object sender, EventArgs e)
        {
    
            txtOriginal.Text="this string is to test. a quick brown fox jump over the lazy dog. dog bytes on fox's leg ang gosht";
        }
    
        private void btnConvert_Click(object sender, EventArgs e)
        {
            string stringToModify = getString();
            string[] words=splitWords(stringToModify);
    
            string urls = txtUrls.Text;
            string[] urlString = urls.Split(',');
    
            for(int i=0;i<urlString.Length;i++)
            {
                string url = urlString[i];
                Random index = new Random();
                int position = index.Next(words.Length);
                if (checkIfUsed(position) == false)
                {
                    usedPositions.Add(position);
                    string tempWord = words[position];
                    tempWord = "<a href='" + url + "'>" + tempWord + "</a>";
                    words[position] = tempWord;
                }
                else
                    i--;
            }
    
            /*if(txtUrls!=null)
            {
    
                for (int i = 0; i < urlString.Length; i++)
                {
                    stringToModify.Replace(words[position], "<a href=" + urlString[i] + ">" + words[position] + "</a>");
                }
            }
             * */
        }
    
        //function to check if random place already used
        private bool checkIfUsed(int radomNum)
        {
            if (usedPositions.Contains(radomNum))
                return true;
            else
    
                return false;
        }
    
        private string getString()
        {
            string myString = txtOriginal.Text;
            string mySubString = myString.Substring(0, 2 * (myString.Length / 3));
            return mySubString;
        }
       //so i can get word to wrap html around it
        private string[] splitWords(string s)
        {
             string[] words= Regex.Split(s, @"/W+");
             return words;
    
        }
    

    【讨论】:

    • 你在ArrayList 失去了我。试试List&lt;int&gt;,或排序集合。
    猜你喜欢
    • 2012-06-16
    • 1970-01-01
    • 2019-09-08
    • 2011-08-11
    • 1970-01-01
    • 1970-01-01
    • 2015-04-04
    • 2016-02-07
    • 1970-01-01
    相关资源
    最近更新 更多