Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C#

Chương trình C# kiểm tra chuỗi chứa ký tự đặc biệt

Kiểm tra và liệt kê các ký tự đặc biệt (không phải chữ cái, không phải số) trong chuỗi bằng char.IsLetterOrDigit.

Mã nguồn


using System;

namespace Demo {
    class MyApplication {
        static void Main(string[] args) {
            string str = "Amit$#%";
            Console.WriteLine("Chuỗi: " + str);
            
            char[] chars = str.ToCharArray();
            var specialChars = new System.Collections.Generic.List();
            
            foreach (char c in chars) {
                if (!char.IsLetterOrDigit(c)) {
                    specialChars.Add(c);
                }
            }
            
            Console.WriteLine("Các ký tự đặc biệt tìm thấy:");
            foreach (char c in specialChars) {
                Console.WriteLine($"  '{c}' (U+{(int)c:X4})");
            }
            Console.ReadLine();
        }
    }
}

Kết quả


Chuỗi: Amit$#%
Các ký tự đặc biệt tìm thấy:
  '$' (U+0024)
  '#' (U+0023)
  '%' (U+0025)

Cách LINQ gọn nhẹ


using System.Linq;

string str = "Amit$#%";
var specials = str.Where(c => !char.IsLetterOrDigit(c)).Distinct();

foreach (char c in specials) {
    Console.WriteLine($"'{c}'");
}

Kiểm tra CÓ chứa ký tự đặc biệt (boolean)


bool HasSpecialChar(string s) {
    return s.Any(c => !char.IsLetterOrDigit(c));
}

// Hoặc dùng Regex
bool HasSpecialCharRegex(string s) {
    return System.Text.RegularExpressions.Regex.IsMatch(s, @"[^a-zA-Z0-9]");
}

Định nghĩa "ký tự đặc biệt"

Thường là: không phải chữ cái (Letter) và không phải số (Digit).

  • Bao gồm: khoảng trắng, dấu câu, ký hiệu toán học, emoji, ký tự điều khiển...
  • char.IsLetterOrDigit trả về true cho: A-Z, a-z, 0-9, và chữ cái Unicode (tiếng Việt, tiếng Nhật, Arabic...).

Lưu ý

  • Code gốc dùng mảng fixed-size + resize — phức tạp không cần. Dùng List<char> hoặc LINQ.
  • Khoảng trắng (' ', '\t') cũng được coi là ký tự đặc biệt theo định nghĩa này.
  • Nếu chỉ muốn kiểm tra ký tự đặc biệt cụ thể (vd: chỉ cho phép @.-_ trong email), dùng whitelist thay vì blacklist.