Giúp code hoặc công thức xóa tất cả chừa chử A-Z, và số 0-9 (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

minhtuan55

Thành viên bị đình chỉ hoạt động
Thành viên bị đình chỉ hoạt động
Tham gia
23/3/16
Bài viết
705
Được thích
52
Chào cả nhà GPE. em cần công thức hoặc code lọc ra chử cái hoặc số như hinh mô tả bên dưới.

1584427809100.png
Xin chân thành cảm ơn !
 
Lần chỉnh sửa cuối:
Ợ. Sao bài lại cụt ngủn mỗi khúc cuối vậy ta.

Kiểu này khó hiểu lắm. Kiểu ăn cá mất đầu thấy ghê ghê. :(
 
Làm khách sạn mà sao dữ liệu kỳ thế bạn?
 
Dữ liệu bị virus chèn kí tự lạ vô rùi.
 
Bài kia là quan ra lệnh chứ nhờ giúp gì đâu mà théc méc.

Vậy mà cũng có người làm. :(
 
Dữ liệu bị virus chèn kí tự lạ vô rùi.
không phải. do mình tạo 1 Textbox nhằm yêu cầu người dùng nhập Tên hoặc Số điện thoại. Nên khi họ ấn nhầm hay cố tình mình đều lọc được
Bài đã được tự động gộp:

Dữ liệu xuất ra từ phần mềm Xê cọng cọng. Thớt có từng nói là trình độ dân GPE không hiểu nổi đâu.
không phải. do mình tạo 1 Textbox nhằm yêu cầu người dùng nhập Tên hoặc Số điện thoại. Nên khi họ ấn nhầm hay cố tình mình đều lọc được
Bài đã được tự động gộp:

Bài kia là quan ra lệnh chứ nhờ giúp gì đâu mà théc méc.

Vậy mà cũng có người làm. :(
không phải. do mình tạo 1 Textbox nhằm yêu cầu người dùng nhập Tên hoặc Số điện thoại. Nên khi họ ấn nhầm hay cố tình mình đều lọc được
Bài đã được tự động gộp:

Làm khách sạn mà sao dữ liệu kỳ thế bạn?
không phải. do mình tạo 1 Textbox nhằm yêu cầu người dùng nhập Tên hoặc Số điện thoại. Nên khi họ ấn nhầm hay cố tình mình đều lọc được
Bài đã được tự động gộp:

Ợ. Sao bài lại cụt ngủn mỗi khúc cuối vậy ta.

Kiểu này khó hiểu lắm. Kiểu ăn cá mất đầu thấy ghê ghê. :(
không phải. do mình tạo 1 Textbox nhằm yêu cầu người dùng nhập Tên hoặc Số điện thoại. Nên khi họ ấn nhầm hay cố tình mình đều lọc được
Bài đã được tự động gộp:

Dữ liệu xuất ra từ phần mềm Xê cọng cọng. Thớt có từng nói là trình độ dân GPE không hiểu nổi đâu.
Bác tranh thủ giúp e nha. e nhiều việc lắm .giờ bận rồi chào bác. Nhớ là 2 tiếng nữa có đáp án nha. Thank
 
Lọc được mốc xì. Theo bài #1 thì là [A-Z0-9]. Tức là Roman Latin uppercase.
Roman Latin lowercase, và Unicode đi đời hết.

Điệu nàyn tối thiểu phải 3 tiếng 4 lời.
 
Lọc được mốc xì. Theo bài #1 thì là [A-Z0-9]. Tức là Roman Latin uppercase.
Roman Latin lowercase, và Unicode đi đời hết.

Điệu nàyn tối thiểu phải 3 tiếng 4 lời.
Áp dụng chút C++ vào nhá hàng tí
Mã:
Function cleanString(text As String) As String
    Dim output As String
    Dim c
    For i = 1 To Len(text)
        c = Mid(text, i, 1)
        If (c >= "a" And c <= "z") Or (c >= "0" And c <= "9") Or (c >= "A" And c <= "Z") Then
            output = output & c
        Else
            output = output & " "
        End If
    Next
    cleanString = Replace(output, " ", "")
End Function
 
Áp dụng chút C++ vào nhá hàng tí
Mã:
Function cleanString(text As String) As String
    Dim output As String
    Dim c
    For i = 1 To Len(text)
        c = Mid(text, i, 1)
        If (c >= "a" And c <= "z") Or (c >= "0" And c <= "9") Or (c >= "A" And c <= "Z") Then
            output = output & c
        Else
            output = output & " "
        End If
    Next
    cleanString = Replace(output, " ", "")
End Function
Dân C++ mà vết code như vầy thì ấu trĩ quá.
Nhắc khéo: bên C++ cái class String có cả đống hàm nhưng cái nào dùng String Buffer mới đúng cách xài.
 
Áp dụng chút C++ vào nhá hàng tí
Mã:
Function cleanString(text As String) As String
    Dim output As String
    Dim c
    For i = 1 To Len(text)
        c = Mid(text, i, 1)
        If (c >= "a" And c <= "z") Or (c >= "0" And c <= "9") Or (c >= "A" And c <= "Z") Then
            output = output & c
        Else
            output = output & " "
        End If
    Next
    cleanString = Replace(output, " ", "")
End Function
ELSE để làm gì? Để REPLACE có công ăn việc làm?
 
ELSE để làm gì? Để REPLACE có công ăn việc làm?
Code cóp từ giải thuật:
Cứ ký tự không muốn giữ thì đổi nó thành một ký hiệu nhất định. Sau đó dùng một hàm quét luôn một lượt.
Nhưng người cóp giải thuật không biết là code này chỉ dùng khi chuỗi đầu vào và đầu ra dùng chung buffer (vị trí bộ nhớ).

Trinh dạy UDS200/tiết nó vậy đó.
 
NumChar()
480
491
502
513
524
535
546
557
568
579
58​
:
59​
;
60​
<
61​
=
62​
>
63​
?
64​
@
65​
A
66​
B
67​
C
68​
D
69​
E
70​
F
71​
G
72​
H
73​
I
74​
J
75​
K
76​
L
77​
M
78​
N
79​
O
80​
P
81​
Q
82​
R
83​
S
84​
T
85​
U
86​
V
87​
W
88​
X
89​
Y
90​
Z
 
NumChar()
480
491
502
513
524
535
546
557
568
579
58​
:
59​
;
60​
<
61​
=
62​
>
63​
?
64​
@
65​
A
66​
B
67​
C
68​
D
69​
E
70​
F
71​
G
72​
H
73​
I
74​
J
75​
K
76​
L
77​
M
78​
N
79​
O
80​
P
81​
Q
82​
R
83​
S
84​
T
85​
U
86​
V
87​
W
88​
X
89​
Y
90​
Z
Chưa hiểu bác gửi các bảng đó dùng để làm gì . bác có thể viết code được không ?
 
Code C nó như vầy (hy vọng nếu thiên hạ học C thì mình đòi USD50/tiết. 1/4 C++ đủ xài rồi)

// code loại các ký tự ngoài "A-Za-z0-9" trong string s
char *spNu = s, *spOl = s-1; // con trỏ duyệt chuỗi
while (*++spOl) // nếu 0 là hết chuỗi
if ( *spOl >= '0' && *spOl <= '9' || *spOl | 32 >= 'a' && *spOl | 32 <= 'z') *spNu++ = *spOl;
*spNu = '\0'; // kết chuỗi mới
// Chú thích: trong mã ASCII, ký tự hoa và thường khác nhau chỉ một bit 32. Đem mẫu tự "A-Z" Or với 32 tức là LowerCase chúng.

Code VBA không được gọn nhẹ như vậy vì:
1. VBA không có con trỏ (*) và biến ký tự (char)
2. VBA không có toán tử tăng/giảm (++ và --)
Tuy nhiên, vì không dùng biến ký tự cho nên VBA có thể đối diện thẳng với Unicode. Nếu gặp Unicode thì C (tiêu chuẩn C11) phải dùng thư viện uchar.h

' code loại các ký tự ngoài "A-Za-z0-9" trong string s
Dim i1 As Integer, i2 As Integer
Dim c As String
For i1 = 1 To Len(s)
c = Mid(s, i1, 1)
If c >= "0" And c <= "9" Or LCase(c) >= "a" And LCase(c) <= "z" Then
i2 = i2 + 1
Mid(s, i2, 1) = c
End If
Next i1
s = Left(s, i2)
 
Lần chỉnh sửa cuối:
Code C nó như vầy (hy vọng nếu thiên hạ học C thì mình đòi USD50/tiết. 1/4 C++ đủ xài rồi)

// code loại các ký tự ngoài "A-Za-z0-9" trong string s
char *spNu = s, *spOl = s-1; // con trỏ duyệt chuỗi
while (*++spOl) // nếu 0 là hết chuỗi
if ( *spOl >= '0' && *spOl <= '9' || *spOl | 32 >= 'a' && *spOl | 32 <= 'z') *spNu++ = *spOl;
*spNu = '\0'; // kết chuỗi mới
// Chú thích: trong mã ASCII, ký tự hoa và thường khác nhau chỉ một bit 32. Đem mẫu tự "A-Z" Or với 32 tức là LowerCase chúng.

Code VBA không được gọn nhẹ như vậy vì:
1. VBA không có con trỏ (*) và biến ký tự (char)
2. VBA không có toán tử tăng/giảm (++ và --)
Tuy nhiên, vì không dùng biến ký tự cho nên VBA có thể đối diện thẳng với Unicode. Nếu gặp Unicode thì C (tiêu chuẩn C11) phải dùng thư viện uchar.h

' code loại các ký tự ngoài "A-Za-z0-9" trong string s
Dim i1 As Integer, i2 As Integer
Dim c As String
For i1 = 1 To Len(s)
c = Mid(s, i1, 1)
If c >= "0" And c <= "9" Or LCase(c) >= "a" And LCase(c) <= "z" Then
i2 = i2 + 1
Mid(s, i2, 1) = c
End If
Next i1
s = Left(s, i2)

Đã test code không chạy đúng yêu cầu. cần xem lại thuật toán C++
 
Đã test code không chạy đúng yêu cầu. cần xem lại thuật toán C++
Test trên nền nào? trình dịch nào? cái hàm gói code nó trả về cái gì?
Có biết C và C++ khác nhau ra sao không? Dân chỉ biết dùng ba cái class cung cấp sẵn từ phụ kiện mà đòi phê code C. Dóc tổ.
 
Test trên nền nào? trình dịch nào? cái hàm gói code nó trả về cái gì?
Có biết C và C++ khác nhau ra sao không? Dân chỉ biết dùng ba cái class cung cấp sẵn từ phụ kiện mà đòi phê code C. Dóc tổ.
TEST TRÊN C ++. KẾT QUẢ TRẬT LẤT
 

File đính kèm

Code C nó như vầy (hy vọng nếu thiên hạ học C thì mình đòi USD50/tiết. 1/4 C++ đủ xài rồi)

// code loại các ký tự ngoài "A-Za-z0-9" trong string s
char *spNu = s, *spOl = s-1; // con trỏ duyệt chuỗi
while (*++spOl) // nếu 0 là hết chuỗi
if ( *spOl >= '0' && *spOl <= '9' || *spOl | 32 >= 'a' && *spOl | 32 <= 'z') *spNu++ = *spOl;
*spNu = '\0'; // kết chuỗi mới
// Chú thích: trong mã ASCII, ký tự hoa và thường khác nhau chỉ một bit 32. Đem mẫu tự "A-Z" Or với 32 tức là LowerCase chúng.

Lệnh *spNu = s là gắn trỏ vào địa chỉ kí tự đầu tiên của chuỗi s
Lệnh *spOl = s-1 tức là gắn trỏ vào địa chỉ bộ nhớ trước chuỗi s 1 ô
Tại sao biến con trỏ lúc thì có thể so sánh với 0 (*++spOl > 0), lúc lại có thể so sánh với kí tự (*spOl >= '0')
Tất cả những câu trên đều là câu hỏi, em không biết gì về C cả, nếu vui lòng anh có thể nói qua 1 chút được không ?
và học phí mấy câu trên là nhiêu đô hoa kỳ vậy anh ?
 
Bạn dùng hàm tự tạo thử xem.
1 là công thức là công thức hết, 2 là code là code hết. Nữa nạc nữa mỡ thì không ổn định cho lắm. dù sao cảm ơn bạn. bạn ở đâu cho mình gửi 1 hộp khẩu trang làm quà
Bài đã được tự động gộp:

Nếu dùng regex thì chỉ cần tìm các ký tự không có trong [A-Za-z0-9] rồi Replace chúng với "".
Mẫu: ([^A-Za-z0-9]+)
Vui lòng cho tôi xem code để tôi test. Xin chân thành cảm ơn 5000 lần
Bài đã được tự động gộp:

Lệnh *spNu = s là gắn trỏ vào địa chỉ kí tự đầu tiên của chuỗi s
Lệnh *spOl = s-1 tức là gắn trỏ vào địa chỉ bộ nhớ trước chuỗi s 1 ô
Tại sao biến con trỏ lúc thì có thể so sánh với 0 (*++spOl > 0), lúc lại có thể so sánh với kí tự (*spOl >= '0')
Tất cả những câu trên đều là câu hỏi, em không biết gì về C cả, nếu vui lòng anh có thể nói qua 1 chút được không ?
và học phí mấy câu trên là nhiêu đô hoa kỳ vậy anh ?
Trình độ của chú sao mà hiểu C++, khó ăn lắm. nó như ma trận phức tạp hơn VBA 1000 lần
Bài đã được tự động gộp:

Anh @VetMini kiên nhẫn và khéo chịu đựng quá nhỉ
Đức phật có câu " Lấy ma quân làm bạn đạo " dịch ra là " Xây dựng đạo hạnh thì đừng cầu không bị ma chướng, vì không bị ma chướng thì chí nguyện không kiên cường " Phải kiên cường thì mới thành công Bác ạ
 
Lệnh *spNu = s là gắn trỏ vào địa chỉ kí tự đầu tiên của chuỗi s
Lệnh *spOl = s-1 tức là gắn trỏ vào địa chỉ bộ nhớ trước chuỗi s 1 ô
Tại sao biến con trỏ lúc thì có thể so sánh với 0 (*++spOl > 0), lúc lại có thể so sánh với kí tự (*spOl >= '0')
Tất cả những câu trên đều là câu hỏi, em không biết gì về C cả, nếu vui lòng anh có thể nói qua 1 chút được không ?
và học phí mấy câu trên là nhiêu đô hoa kỳ vậy anh ?
Hầu hết dân chuyên C đều sử lý chuỗi bằng con trỏ. Bởi vì nó nhanh hơn, và code ngắn hơn.
Trả lời câu hỏi 1:
Trong C, cũng giống như VBA, lô gic được tính theo 0 và khác 0.
++spOl là lệnh tiền tố, tăng spOl trước khi lấy kết quả của nó. Lệnh *x là lệnh truy vấn bộ nhớ (lấy trị ở vị trí nhớ x).
Như vậy, *++spOl là nhích con trỏ spOl lên một bước, và sau đó truy vấn trị trong vị trí mới.
Cái này tương đương với (++spOl, *spOl <> 0).
Nếu tôi đặt *spOl++ (hậu tố) thì truy vấn xong mới nhích con trỏ. (tôi không tìm được câu tương đương như trên, để hỏi lại tụi bạn)
C đặt luật rằng Null tức ký tự '\0' là ký hiệu kết thúc chuỗi. Như vậy nếu con trỏ của tôi trỏ vào ô ký tự trị 0 thì nó đã duyệt hết chuỗi.
Trả lời câu hỏi 2:
C coi ký tự như là kiểu char. Kiểu char gần như tương đương với unsigned byte. char literals thì nằm giuwax hai dấu nháy đơn.
*spOl >= '0' là so sánh ký tự với ký tự 0 (trị 48). *spOl > 0 là so sánh với ký tự Null (trị 0, ký hiệu literal '\0')
Trả lời câu 3:
Mấy câu căn bản như vậy mà ăn tiền thì khoá học coi như thấp quá. Coi như khuyến mãi đi.

Lưu ý là tôi đang nói chuyện C. C mới căn bản chứ C++, C# thì cũng như Java, chỉ cần học cách dùng đống hàm thư viện thôi.
Ở trên tôi hỏi thớt cái hàm test code nó trả về cái gì là để thử lại thớt có biết con trỏ là cái gì không. Vả lại, với dân viết C++ thì cái "trả về" rất quan trọng; nếu không khéo thì nó tạo ra một mớ objects tùm lum. Thớt đâu dám trả lời.
(C string khác với lớp String trong thư viện C++)

Anh @VetMini kiên nhẫn và khéo chịu đựng quá nhỉ
Không hẳn chịu đựng đâu. Tôi biết thớt chỉ nói khoác thế thôi chứ không đủ trình độ viết cái thunk fucntion mà test code đâu.
(Có lần chôm code trên mạng ra khoe bị lật tẩy rồi cho nên lần này chưa dám hó hé)
 
(2) Chưa hiểu bác gửi các bảng đó dùng để làm gì .(1) bác có thể viết code được không ?
(1) Mình viết được, tuy thô nhưng không để viết cho bạn, 1 khi bạn đã biết về C+
(2) Có trình độ "lập trình" này nọ mà không biết hay không muốn xài bảng đó thì còn lâu sung mới rụng nha bạn!

Tạm biệt! :D
 
@minhtuan55: Bạn không nên viết bài dùng những từ ngữ làm xúc phạm đến thành viên khác + không được viết bài liên quan đến chính trị.
Tôi đình chỉ hoạt động của bạn 15 ngày kể từ ngày hôm nay do mắc những lỗi trên.
Mong rằng mọi người thảo luận với một không khí dễ chịu và giúp đở nhau cùng tiến bộ.
 

Bài viết mới nhất

Back
Top Bottom