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
相关产品推荐
相关产品推荐

