Code xử lý chuỗi ký tự

Trạng thái
Không mở trả lời sau này.

mathvn

Yêu THVBA
Có thể thấy 8 dấu cách thành 1 phím tab. có thể thực hiện chuẩn hóa này trước khi làm việc. Bạn hãy xác nhận có đúng 8 dấu cách = 1 tab không nhé.
Văn bản đã được chuẩn hóa thô trước khi xử lý. Do đó, với regex "[ ]@([! ])" tất cả khoảng trắng thừa đã được loại bỏi. Do đó, theo tôi nên xử lý trường hợp dấu hiệu xuống dòng + " " + a) hoặc tab + " " + a) và tương tự thế là đủ.
 

vbano1

SMod
Thành viên BQT
Như vậy tôi nhận thức rằng, văn bản word người dùng sử dụng Tab như bạn nói. Trường hợp người dùng sử dụng 8 dấu cách thay cho một dấu Tab là không cần quan tâm nữa. Nếu nhận thức của tôi là sai xin hãy phản hồi lại.
 

tuhocvba

Administrator
Thành viên BQT
@NhanSu cứ để mọi người xác nhận, rồi đưa về string dễ xử lý hơn thì tới Nhansu tiếp nối .
 

Euler

Administrator
Thành viên BQT
Thu hoạch 1: Chuyển list thành normal text:
Mã:
Sub ConvertAllAutoNumberToText()
    If ActiveDocument.Lists.Count > 0 Then
        Dim lisAutoNumList As List

        For Each lisAutoNumList In ActiveDocument.Lists
            lisAutoNumList.ConvertNumbersToText
        Next
    Else
          
    End If
End Sub
Nguồn:
Chuẩn hóa:
Chuyển 8 dấu cách=> dấu tab: ^32^32^32^32^32^32^32^32 => ^t
Chuyển xuống dòng + dấu cách => xuống dòng + tab: ^p^32 => ^p^t
Chuyển tab + khoảng trắng => tab : ^t^32 => ^t (Do ~ Loop, chuyển tới khi nào hết sạch thì thôi).

Bài tập 1: Chuyển tất cả các thể loại: 1. 1- 1/ thành a) và i. i- và i/ thành a) <Điều kiện phía trước là tab hoặc dấu xuống dòng)
^p1.
^p1/
^p1-
thành ^pa)
hoặc ^t1. => ^ta)

và:
^pa.
^pa-
^pa/
^pii/
^pii.
^pii-
thành ^pa)
hoặc ^tb. => ^ta)
Để dễ xử lý. Hiện tại loạn xị ngậu a) b) .... đưa hết về a) cho gọn.
 

Euler

Administrator
Thành viên BQT
@NhanSu Ra tay giúp Euler bài tập 1 nhé: Chuyển hết các thể loại nêu trên thành a)
Bạn cần đăng nhập để thấy đính kèm
 

tuhocvba

Administrator
Thành viên BQT
@NhanSu Khả năng cao phải convert list về một định dạng 1. 2. (số chấm) trước khi chuyển thành normal text.
Chứ với bài toán của Euler, đọc hiểu iii. hay iii- hay iv- thì quá khó.
 

NhanSu

SMod
Thành viên BQT
Theo ý mình từ đầu, chuyển về dạng này:
Bạn cần đăng nhập để thấy hình ảnh


Sau đó xử lý chuỗi. Lập danh sách để nhận biết dấu hiệu bắt đầu các câu.
 

mathvn

Yêu THVBA
Như vậy tôi nhận thức rằng, văn bản word người dùng sử dụng Tab như bạn nói. Trường hợp người dùng sử dụng 8 dấu cách thay cho một dấu Tab là không cần quan tâm nữa. Nếu nhận thức của tôi là sai xin hãy phản hồi lại.
Bạn nhận thức đúng rồi nhưng còn thêm 1 ý là họ tab không đúng chỗ. Cái này xử lý được luôn thì quá tốt.
 

tuhocvba

Administrator
Thành viên BQT
Theo ý mình từ đầu, chuyển về dạng này:
Bạn cần đăng nhập để thấy hình ảnh


Sau đó xử lý chuỗi.
Thẳng hàng hết thế này thì biết item nào là con của item nào nữa.
 

Euler

Administrator
Thành viên BQT
Mình cần chuyển tât cả các list thành dạng a) nhé.
Bạn cần đăng nhập để thấy đính kèm
 

mathvn

Yêu THVBA
Thu hoạch 1: Chuyển list thành normal text:
Mã:
Sub ConvertAllAutoNumberToText()
    If ActiveDocument.Lists.Count > 0 Then
        Dim lisAutoNumList As List

        For Each lisAutoNumList In ActiveDocument.Lists
            lisAutoNumList.ConvertNumbersToText
        Next
    Else
         
    End If
End Sub
Nguồn:
Chuẩn hóa:
Chuyển 8 dấu cách=> dấu tab: ^32^32^32^32^32^32^32^32 => ^t
Chuyển xuống dòng + dấu cách => xuống dòng + tab: ^p^32 => ^p^t
Chuyển tab + khoảng trắng => tab : ^t^32 => ^t (Do ~ Loop, chuyển tới khi nào hết sạch thì thôi).

Bài tập 1: Chuyển tất cả các thể loại: 1. 1- 1/ thành a) và i. i- và i/ thành a) <Điều kiện phía trước là tab hoặc dấu xuống dòng)
^p1.
^p1/
^p1-
thành ^pa)
hoặc ^t1. => ^ta)

và:
^pa.
^pa-
^pa/
^pii/
^pii.
^pii-
thành ^pa)
hoặc ^tb. => ^ta)
Để dễ xử lý. Hiện tại loạn xị ngậu a) b) .... đưa hết về a) cho gọn.
Để chuyển list về text thì chỉ cần lệnh ActiveDocument.ConvertNumbersToText mình chưa hiểu ý của bạn.
 

Euler

Administrator
Thành viên BQT
Để chuyển list về text thì chỉ cần lệnh ActiveDocument.ConvertNumbersToText mình chưa hiểu ý của bạn.
Chuyển thành text xong rồi sao bạn?
Làm thế nào để biết đây là 1 item.
Bạn cần đăng nhập để thấy đính kèm
 

NhanSu

SMod
Thành viên BQT
@Euler a) và b) nếu gần nhau thì tương đương (anh em); i) và ii) cũng vậy nhưng "a)" rồi đến "i)" thì "a)" là cha của "i)" và ngược lại.
 
Trạng thái
Không mở trả lời sau này.
Top