2010-04-20 40 views

Trả lời

1

Nếu chuỗi của bạn nằm trong URL, thì tôi cho rằng đó là một loại văn bản không định dạng thông thường dưới dạng ký tự unicode (ví dụ như đối với tài liệu MS Word). Trong unicode, you can only have certain characters as superscript or subscript. Họ không phải là nhiều và một tuyên bố chuyển đổi đơn giản sẽ làm công việc.

Nếu bạn đang cố gắng chuyển đổi văn bản được định dạng có thể chứa tất cả các loại ký tự dưới dạng siêu văn bản hoặc chỉ số phụ, điều đó có nghĩa là chúng không được biểu thị trực tiếp dưới dạng unicode và nó phụ thuộc rất nhiều vào định dạng của văn bản. Nếu có, vui lòng cung cấp thêm thông tin trong câu hỏi.

+1

Lưu ý rằng tất cả các siêu và bảng con trong Unicode đều có sự phân hủy thành các đối tượng ký tự bình thường của chúng. Vì vậy, nó sẽ hoạt động mà không có một câu lệnh 'switch' được mã hóa cứng của một sự lựa chọn các ký tự tùy ý. – Joey

4

Cảm ơn Johannes, bạn đã cho tôi đi đúng hướng. Các mã mà tôi đã nhận nó làm việc trông như sau:

public string ConvertSuperscript(string value) 
{ 
    string stringFormKd = value.Normalize(NormalizationForm.FormKD); 
    StringBuilder stringBuilder = new StringBuilder(); 

    foreach (char character in stringFormKd) 
    { 
     UnicodeCategory unicodeCategory = CharUnicodeInfo.GetUnicodeCategory(character); 
     if (unicodeCategory != UnicodeCategory.NonSpacingMark) 
     { 
      stringBuilder.Append(character); 
     } 
    } 

    return stringBuilder.ToString().Normalize(NormalizationForm.FormKC); 
} 

tôi đã cố gắng phân hủy kinh điển trước đây, nhưng nó cần sự phân hủy khả năng tương thích để làm việc đúng cách.

Các vấn đề liên quan