Đếm số khoảng trắng trong chuỗi

Liên hệ QC

challenge98

Thành viên chính thức
Tham gia
21/6/09
Bài viết
90
Được thích
5
Có ai biết cách đếm số khoảng trắng trong chuỗi không?
mình làm không được thấy toàn báo lỗi ai sửa giúp mình code này với.
 

File đính kèm

Code của bạn thiếu 1 dòng "End If" thôi, bạn xem lại file nha!
Hoặc viết bằng code này cho nó ngắn và mạnh hơn.
Mã:
Function SumBl(st As String) As Byte
Dim mng() As String
mng = Split(st, " ")
SumBl = UBound(mng)
End Function
Thân.
 

File đính kèm

Upvote 0
Dim StrArDes()as String
‘ Mảng các xâu được khai báo dạng mảng động
Dim StrScr as String ‘ Xâu ban đầu
StrScr=”Point1_23.5_4.5_44.8”
StrArDes=Split(StrScr , "_")
‘ Tách xâu StrScr thành một mảng các xâu và đưa vào StrArDes,
‘ kí tự ngăn cách là “_”
‘ Khi đó StrArDes(0)=”Point1, StrArDes(1)=”23.5”
‘ StrArDes(2)=”4.5”, StrArDes(3)=”44.8”
Debug.Print StrArDes(0),StrArDes(1),StrArDes(2),StrArDes(3)
Trích trong sách áp dụng vào code của bạn
Function SumBl(st As String) As Byte
Dim mng() As String 'khai báo mảng động
mng = Split(st, " ") ' cắt chuỗi và đưa vào mảng điều kiện cắt là kh " "
SumBl = UBound(mng) 'đếm số cột của mảng
End Function ' kết thúc hàmTheo như trong sách thì của bạn chữ nguyễn thị hoa phải cho kết quả là 3 sao của bạn vẫn cho kết quả đúng là 2 nhỉ?
À chắc mình đoán đếm cột nó cũng từ cột 0,1,2,3... cho nên kết quả vẫn đúng?
 
Lần chỉnh sửa cuối:
Upvote 0
Trích trong sách áp dụng vào code của bạn
Function SumBl(st As String) As Byte
Dim mng() As String 'khai báo mảng động
mng = Split(st, " ") ' cắt chuỗi và đưa vào mảng điều kiện cắt là kh " "
SumBl = UBound(mng) 'đếm số cột của mảng
End Function ' kết thúc hàmTheo như trong sách thì của bạn chữ nguyễn thị hoa phải cho kết quả là 3 sao của bạn vẫn cho kết quả đúng là 2 nhỉ?
nguyễn thị hoa là có 2 khoảng trắng đúng rồi mà.
Hàm
PHP:
Function SumBl(st As String) As Byte
Dim mng() As String
mng = Split(st, " ")
SumBl = UBound(mng)
End Function
Nên thêm 1 dòng
st=trim(st)
Còn muốn thành 3 thì làm như sau:
PHP:
Function SumBl(st As String) As Byte
Dim mng() As String
st=trim(st)
mng = Split(st, " ")
SumBl = UBound(mng) +1
End Function
 
Upvote 0
Muốn vậy thì bạn viết như sau:
Mã:
Function trang(ten As String) As Integer
Dim i As Integer
Dim j As Integer
j = 0
ten = Trim(ten)
For i = Len(ten) To 1 Step -1
If Mid(ten, i, 1) = " " Then j = j + 1
Next
trang = j
End Function

@ThuNghi: Theo em thì đây là việc đếm xem dữ liệu có bao nhiêu khoảng trắng, vậy ko nên cho hàm TRIM() vào. Vì để nó tính luôn việc có nhập 2 khoảng trắng liên tục hay có khoảng trắng ở cuối luôn mới đúng chứ. Đâu phải vấn để sử lý thông tin dữ liệu gì đâu. Chỉ cần xét xem trong đoạn text có tất cả bao nhiên khoảng trắng là ổn phải ko?
Thân.
 
Upvote 0
Có ai biết cách đếm số khoảng trắng trong chuỗi không?
mình làm không được thấy toàn báo lỗi ai sửa giúp mình code này với.
Bạn viết code để học hay là yêu cầu công việc của bạn là đếm khoản trắng? Nếu chỉ để học hỏi thì không có vấn đề gì nhưng nếu có liên quan đến công việc thì không cần thiết. Excel có các công thức dư sức làm việc này. Có thể làm như thế này:
Mã:
=LEN(A1)-LEN(SUBSTITUTE(A1," ","")
 
Upvote 0
Mình thấy trong VBA nếu khai khoảng trắng là " " nhiều khi sinh chuyện tốt nhất là khai là Chr(32) hay Space(1) an toàn hơn.
 
Upvote 0
Bạn viết code để học hay là yêu cầu công việc của bạn là đếm khoản trắng? Nếu chỉ để học hỏi thì không có vấn đề gì nhưng nếu có liên quan đến công việc thì không cần thiết. Excel có các công thức dư sức làm việc này. Có thể làm như thế này:
Mã:
=LEN(A1)-LEN(SUBSTITUTE(A1," ","")
Cũng như bạn Huuthang thì công thức này là ngắn gọn nhất rồi đấy!
Nếu dùng VBA thì cũng theo cách này mà làm, chẳng có For phiếc gì cả... Split lại càng thừa
PHP:
Function DemKT(Chuoi As String) As Long
  DemKT = Len(Chuoi) - Len(Replace(Chuoi, " ", ""))
End Function
Đây chính là thuật toán chung cho việc COUNT WORD (không riêng gì khoảng trắng)
 
Upvote 0
Web KT

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

Back
Top Bottom