Giúp em trộn một chuỗi ký tự ( đảo vị trí các nhóm từ)

Liên hệ QC

blueforever

Thành viên mới
Tham gia
9/11/10
Bài viết
16
Được thích
15
ví dụ có nhiều dòng dữ liệu như sau:
toi yeu ban, toi di tim toi, lam nhu the nao..
ban, toi, chu, di, mo, co......

E muốn xáo trộn vị trí random các cụm từ, em cám ơn nhiều!
lam nhu the nao, toi yeu ban, toi di tim toi
toi, chu, di...
 
Sau đây là 1 cách đơn giản:
PHP:
Option Explicit
Function DaoChu(StrC As String) As String
 ReDim Arr(1 To 1, 1 To Len(StrC))
 Dim J As Long, VTr As Byte, Dm As Long
 Dim Tmp As String
 
 Tmp = StrC & ","
 Do
    VTr = InStr(Tmp, ",")
    If VTr Then
        J = J + 1
        Arr(1, J) = Trim(Left(Tmp, VTr))
        Tmp = Mid(Tmp, VTr + 1, Len(Tmp))
    Else
        Exit Do
    End If
 Loop
 If J > 2 Then
    Randomize
    For Dm = 1 To 999
        VTr = 1 + (J - 1) * Rnd() \ 1
        If VTr < J Then
            Tmp = Arr(1, VTr)
            Arr(1, VTr) = Arr(1, J)
            Arr(1, J) = Tmp
        End If
    Next Dm
    For Dm = 1 To J
        DaoChu = DaoChu & " " & Arr(1, Dm)
    Next Dm
 Else
 End If
End Function
 
ok e làm đc rồi Thanks a!
 
Lần chỉnh sửa cuối:
sau đây là 1 cách đơn giản:
PHP:
option explicit
function daochu(strc as string) as string
 redim arr(1 to 1, 1 to len(strc))
 dim j as long, vtr as byte, dm as long
 dim tmp as string
 
 tmp = strc & ","
 do
    vtr = instr(tmp, ",")
    if vtr then
        j = j + 1
        arr(1, j) = trim(left(tmp, vtr))
        tmp = mid(tmp, vtr + 1, len(tmp))
    else
        exit do
    end if
 loop
 if j > 2 then
    randomize
    for dm = 1 to 999
        vtr = 1 + (j - 1) * rnd() \ 1
        if vtr < j then
            tmp = arr(1, vtr)
            arr(1, vtr) = arr(1, j)
            arr(1, j) = tmp
        end if
    next dm
    for dm = 1 to j
        daochu = daochu & " " & arr(1, dm)
    next dm
 else
 end if
end function


anh cho em hỏi thêm 1 điều kiện tùy chọn nữa là lấy bao nhiêu nhóm từ bên trái qua được không ạ?
 
Web KT
Back
Top Bottom