首页 > 解决方案 > 如何让文本框在某个文本之间打印一个变量?

问题描述

例如,我需要richTextBox2 来打印richTextBox1 中“AaBb”和“CcDd”之间的任何内容。

if (richTextBox1.Text.Contains ("AaBb x CcDd"))
    //print whatever is x in richTextBox2

编辑:我忘了提及我正在尝试做的事情。我正在尝试抓取一个网站并在richTextBox 中打印值(例如欧元到美元)。到目前为止,这是我的代码。不幸的是,它对两个答案都不起作用。

版本 1:

    using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using System.Net;
using System.Windows.Forms;

namespace BitPrice
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

       

 private void Form1_Load(object sender, EventArgs e)
        {
            WebClient priceVariationDollar = new WebClient();
            string dollarPrice = priceVariationDollar.DownloadString("https://www.xe.com/pt/currencyconverter/convert/?Amount=1&From=EUR&To=USD");
            euroTextBox.Text = dollarPrice;
            if (euroTextBox.Text.Contains("<span class=converterresult - toAmount></span>"));
            {
                int p1, p2;
                p1 = euroTextBox.Text.IndexOf("<Span class=converterresoult - toAmount>");
                p2 = euroTextBox.Text.IndexOf("</span>");
                if (p2 > p1 + 4)
                {
                    dollarTextBox.Text = euroTextBox.Text.Substring(p1 + 4, p2 - p1 - 4);
                }
            }
        }
    }
    

版本 2:

    using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using System.Net;
using System.Windows.Forms;

namespace BitPrice
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            WebClient priceVariationDollar = new WebClient();
            string dollarPrice = priceVariationDollar.DownloadString("https://www.xe.com/pt/currencyconverter/convert/?Amount=1&From=EUR&To=USD");
            euroTextBox.Text = dollarPrice;
            if (euroTextBox.Text.Contains("<span class=converterresult - toAmount></span>"));
            {
                var startIndex = euroTextBox.Text.IndexOf("<span class=converterresult - toAmount>") + "<span class=converterresult - toAmount>".Length;
                var endIndex = euroTextBox.Text.IndexOf("</span>");
            if (startIndex >= 0 && endIndex > startIndex)
                dollarTextBox.Text = euroTextBox.Text.Substring(startIndex, endIndex - startIndex);
        }
    }
}

对不起,如果它太长

标签: c#richtextbox

解决方案


您需要首先检查这两个文本是否在 中richTextBox1,然后如果它们都退出,则查看第一个是否在第二个之前,然后您取两者之间的内容。

int p1, p2;
string t1, t2;
t1 = "....."; //Your first searched text
t2 = "..."; //Your second searched text
p1 = richTextBox1.Text.IndexOf(t1);
p2 = richTextBox1.Text.IndexOf(t2);
if (p2 > p1 + t1.Length)
    richTextBox2.Text1 = richTextBox1.Text.Substring(p1 + t1.Length, p2 - p1 - t1.Length);

推荐阅读