Chuyển đến nội dung
Diễn đàn CADViet
  • Thông báo

    • Nguyen Hoanh

      CADViet đã hoàn tất nâng cấp   14/09/2017

      Chào các bạn, CADViet đã hoàn tất việc nâng cấp lên phiên bản mới. Tất cả các chức năng đã hoạt động theo kỳ vọng của ban quản trị. Nếu có vấn đề gì cần phản hồi, các bản post ở đây nhé: Trân trọng, Nguyễn Hoành.
Đăng nhập để thực hiện theo  
anonmyous

[Cần giúp đỡ] Tính số lượng chữ cái font UniCode

Các bài được khuyến nghị

Hôm nay tui có viết một đoạn mã trong đó cần đếm số lượng chữ cái, vấn đề nó là thế này :

- Nếu chữ không dấu "dat dao" chẳng hạn, thì hàm (strlen "dat dao") = 7 -> OK

- Nếu chữ theo font Unicode, nhìn vào thì nó là (strlen "đất đào") nhưng thực sự nó lại hiểu là (strlen "\U+0111\U+1EA5t \U+0111\U+00E0o") và kết quả là bằng 31.

Bác nào giúp hộ đoạn mã tính chiều dài của một chuỗi bất kì, có thể chữ không dấu, cũng có thể chữ dùng font Unicode hộ mình với

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

1). Tức là bạn muốn "đất đào" phải bằng 7, giống như "dat dao", hay 31 (nếu nhập vào), hay 25 nếu chọn đối tượng?

2). String đó nhập vào hay chọn trên bản vẽ, dạng unicode hay hecxa?

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

bạn duyệt từ đầu đến đít chuỗi bằng while. mỗi lần lấy 1 ký tự.

- Nếu kí tự đó là "\" thì đọc tiếp ký tự kế tiếp.

+ Nếu ký tự kế tiếp là "U" thì chắc chắn đó là 1 ký tự unicode. nhảy 1 fát 7 bước để duyệt tiếp và biến đếm tăng 1 đơn vị

+ Nếu ký tự kế tiếp là "n" hoặc "P" hoặc "t" hoặc """ hoặc "\"thì nhảy 1 fát 2 bước để duyệt tiếp và biến đếm tăng 1 đơn vị

+ Nếu khác 2 trường hợp trên thì nó là 1 ký tự bình thường. biến đếm tăng 1

Giá trị của biến đếm cuối cùng là chiều dài thực của chuỗi

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Làm 1 hàm count số lượng xuất hiện "\U+", giả sử là hàm u_count

 

Số lượng ký tự thực tế bằng

(- (strlen str) (* 6 (u_count str))

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

@Bác Thái: giả sử chuỗi xét là "\Ua" ?

@Bác Hoành: giả sử chuỗi xét là "\U+a" ?

Có lẽ do các bác mãi quan tâm đến "\U" và "\U+" quá mà quên mất các trường hợp đặc biệt chăng?

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

@Bác Thái: giả sử chuỗi xét là "\Ua" ?

@Bác Hoành: giả sử chuỗi xét là "\U+a" ?

Có lẽ do các bác mãi quan tâm đến "\U" và "\U+" quá mà quên mất các trường hợp đặc biệt chăng?

Theo Tue_NV, trường hợp bác nêu thì chuỗi "\Ua" hoặc là chuỗi "\U+a" không có trong Tiếng Việt,

Bạn chủ topic đang đếm "Tiếng Việt" nên có thể chấp nhận được. ;)

 

Hoặc có thể dùng cách chuyển mã Unicode sang mã khác (TCVN chẳng hạn) rồi đếm. Tue_NV chưa thử, nhưng chắc là được

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Theo Tue_NV, trường hợp bác nêu thì chuỗi "\Ua" hoặc là chuỗi "\U+a" không có trong Tiếng Việt,

Bạn chủ topic đang đếm "Tiếng Việt" nên có thể chấp nhận được. ;)

Hoặc có thể dùng cách chuyển mã Unicode sang mã khác (TCVN chẳng hạn) rồi đếm. Tue_NV chưa thử, nhưng chắc là được

1). Chủ topic nói rõ là:cần đếm số lượng chữ cái, có thể chữ không dấu, cũng có thể chữ dùng font Unicode; không nói đều là tiếng Việt.

2).Ý tưởng chuyển qua TCVN chắc được.

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

1). Chủ topic nói rõ là:cần đếm số lượng chữ cái, có thể chữ không dấu, cũng có thể chữ dùng font Unicode; không nói đều là tiếng Việt.

2).Ý tưởng chuyển qua TCVN chắc được.

1) Thế thì khi nào mà (= "\U" "UU") hoặc (= "\U+" "UU+") -> trả về T thì chắc chắn đó là Unicode rồi. Vì chắc là không có ai viết "UU" bằng "\U" hoặc không viết "UU+" bằng "\U+" đâu bác nhỉ??

Cách xác định còn lại như các bác trên đã trình bày rồi.

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

1) Thế thì khi nào mà (= "\U" "UU") hoặc (= "\U+" "UU+") -> trả về T thì chắc chắn đó là Unicode rồi. Vì chắc là không có ai viết "UU" bằng "\U" hoặc không viết "UU+" bằng "\U+" đâu bác nhỉ??

Cách xác định còn lại như các bác trên đã trình bày rồi.

Tôi nghĩ cách lúa nhất có thể lại là cách tốt nhất, không cấm đoán rào giậu gì cả: đó là cứ lập list các từ tiếng Việt có dấu ă, á, à, đ... (bằng 7 ký tự hecxa), đưa chúng vào list, sau đó duyệt chuỗi. Cái nào giống thì biến đếm tăng 1. Thế chắc ổn?

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Nếu là chọn text trên màn hình thì sẽ nhàn hơn nhiều đó bạn :D

 

(strlen (vla-get-textstring textObj))

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Thực ra chuỗi cần tính của mình nó phát sinh trong quá trình chạy LISP & cũng chỉ dùng để qui định các thành phần đo vẽ thôi, cho nên search đếm cái dấu "\" rồi trừ nó ra cũng đủ rồi.

Thanks các bác đã tư vấn giúp

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Tạo một tài khoản hoặc đăng nhập để nhận xét

Bạn cần phải là một thành viên để lại một bình luận

Tạo tài khoản

Đăng ký một tài khoản mới trong cộng đồng của chúng tôi. Điều đó dễ mà.

Đăng ký tài khoản mới

Đăng nhập

Bạn có sẵn sàng để tạo một tài khoản ? Đăng nhập tại đây.

Đăng nhập ngay

Đăng nhập để thực hiện theo  

×