首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C# WinForms 從 RichTextBox 提取身份證號並輸出至另一 RichTextBox

     編輯:程式設計綜合問答

需求:richTextBox1 含多行文本,每行逗號分隔,第 3 列為身份證號,提取所有身份證號顯示在 richTextBox2,每行一個。

核心代碼 (按鈕點擊事件)


private void btnExtract_Click(object sender, EventArgs e) {
    string text = richTextBox1.Text;
    if (string.IsNullOrWhiteSpace(text)) return;
    
    var lines = text.Split(new[] { "\r\n", "\n" }, StringSplitOptions.RemoveEmptyEntries);
    var sb = new StringBuilder();
    
    foreach (string line in lines) {
        var parts = line.Split(',');
        if (parts.Length >= 3) {
            string idCard = parts[2].Trim(); // 第3列 (索引2)
            // 可選:簡單驗證身份證格式 (18位數字/X)
            if (Regex.IsMatch(idCard, @"^\d{17}[\dXx]$")) {
                sb.AppendLine(idCard);
            }
        }
    }
    richTextBox2.Text = sb.ToString();
}

關鍵點

  • Split(new[] {"\r\n", "\n"}, ...) 兼容 Windows/Unix 換行符。
  • StringSplitOptions.RemoveEmptyEntries 忽略空行。
  • StringBuilder 高效拼接字符串,避免循環 += 性能問題。
  • Regex.IsMatch 簡單驗證身份證格式 (可選)。
  • Trim() 去除字段前後空白。

進階:異步處理大數據量


private async void btnExtract_Click(object sender, EventArgs e) {
    btnExtract.Enabled = false;
    richTextBox2.Text = "處理中...";
    await Task.Run(() => {
        // 上述提取邏輯構建 result 字符串
        string result = ...;
        this.Invoke((Action)(() => {
            richTextBox2.Text = result;
            btnExtract.Enabled = true;
        }));
    });
}

此邏輯清晰提取指定列數據,適用於 CSV 格式文本處理場景。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved