You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#中TextBox按换行分割及域名批量处理代码优化问询

解决C#中TextBox换行分割域名并批量处理的问题

嘿,我来帮你搞定这个批量处理域名的需求!你的代码目前只能处理单个域名,咱们只需要做几个小改动就能实现批量处理换行分隔的域名啦,具体步骤如下:

1. 正确分割TextBox中的换行内容

首先要把TextBox里的内容按换行拆分成独立的域名数组。因为不同场景下换行符可能是\r\n(Windows)或者\n(其他平台),所以咱们用Split的时候要同时处理这两种情况,还要移除空行避免无效请求:

string[] domains = textBox1.Text.Split(new[] { "\r\n", "\n" }, StringSplitOptions.RemoveEmptyEntries);

2. 调整代码实现批量处理

原来的代码只处理单个域名,现在咱们要把逻辑改成循环遍历每个分割后的域名,同时把DataTable的创建移到循环外面,这样所有域名的结果都会存在同一个表格里。另外,建议加上异常处理,避免某个域名请求失败导致整个程序崩溃。

修改后的完整代码如下:

namespace DomainChecker {
    public partial class Form1 : Form {
        public Form1() {
            InitializeComponent();
        }
        private void button1_Click(object sender, EventArgs e) {
            // 先分割TextBox中的域名
            string[] domains = textBox1.Text.Split(new[] { "\r\n", "\n" }, StringSplitOptions.RemoveEmptyEntries);
            
            // 提前创建DataTable并定义列,避免循环中重复创建
            DataTable dt = new DataTable();
            dt.Columns.Add("Domain", typeof(string));
            dt.Columns.Add("Page Authority", typeof(string));
            dt.Columns.Add("Domain Authority", typeof(string));

            foreach (string domain in domains) {
                // 跳过空域名(虽然Split已经处理,但保险起见)
                if (string.IsNullOrWhiteSpace(domain)) continue;
                
                try {
                    using (var webClient = new System.Net.WebClient()) {
                        // 拼接请求URL
                        string apiUrl = $"https://semanthic.com/api.php?api=masiting&dom={domain}";
                        // 从网页获取JSON字符串
                        string rawJSON = webClient.DownloadString(apiUrl);
                        // 将JSON转换为Domain对象
                        Domain Doms = JsonConvert.DeserializeObject<Domain>(rawJSON);
                        
                        // 创建新行并添加到DataTable
                        DataRow row = dt.NewRow();
                        row[0] = domain;
                        row[1] = Doms.Pa;
                        row[2] = Doms.Da;
                        dt.Rows.Add(row);
                    }
                }
                catch (Exception ex) {
                    // 处理单个域名请求失败的情况,比如记录错误或者添加错误提示行
                    DataRow errorRow = dt.NewRow();
                    errorRow[0] = domain;
                    errorRow[1] = "请求失败";
                    errorRow[2] = ex.Message;
                    dt.Rows.Add(errorRow);
                }
            }
            
            // 绑定DataTable到DataGridView展示结果
            dataGridView1.DataSource = dt;
        }
    }
}

关键改动说明

  • 分割逻辑:用Split处理多种换行符,确保所有域名都被正确拆分,同时移除空行。
  • 循环处理:遍历每个域名,逐个请求API并添加结果到表格。
  • 异常处理:给单个域名的请求加上try-catch,避免一个域名出错导致整个批量任务中断,还能直观看到错误信息。
  • DataTable位置:把表格创建移到循环外,保证所有结果都存在同一个表格里。

另外提个小建议:如果要处理大量域名,同步的DownloadString会让UI卡顿,你可以改成异步方法(比如DownloadStringTaskAsync),搭配async/await来优化用户体验哦!

内容的提问来源于stack exchange,提问作者Rafi Halilintar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 06:56:08