Xin nhờ các anh chị chỉ giúp cách để lấy một số ký tự đầu tiên trong một chuỗi ch trước và giữ nguyên từ cuối cùng:

Liên hệ QC

dragonvinh2000

Thành viên mới
Tham gia
4/8/08
Bài viết
13
Được thích
1
Xin nhờ các anh chị chỉ giúp cách để lấy một số ký tự đầu tiên trong một chuỗi ch trước và giữ nguyên từ cuối cùng:
ví du: chuỗi vào Nguyễn Hoàng Việt An. Chuỗi ra: Nhvan; lấy từ 1 : N lấy từ 2 H; Lấy từ 3 là V; Từ cuối giữ nguyên: An
Xin cảm ơn các Anh chị.
 
Xin nhờ các anh chị chỉ giúp cách để lấy một số ký tự đầu tiên trong một chuỗi ch trước và giữ nguyên từ cuối cùng:
ví du: chuỗi vào Nguyễn Hoàng Việt An. Chuỗi ra: Nhvan; lấy từ 1 : N lấy từ 2 H; Lấy từ 3 là V; Từ cuối giữ nguyên: An
Xin cảm ơn các Anh chị.
Bạn đã post sai box rồi nhé. Bài này tôi nghĩ là box lập trình. Tôi chuyển về đúng box cho bạn nhé. Lần sau nếu có bài mới thì nên chọn đúng box rồi post bài nhé.
 
Upvote 0
Xin nhờ các anh chị chỉ giúp cách để lấy một số ký tự đầu tiên trong một chuỗi ch trước và giữ nguyên từ cuối cùng:
ví du: chuỗi vào Nguyễn Hoàng Việt An. Chuỗi ra: Nhvan; lấy từ 1 : N lấy từ 2 H; Lấy từ 3 là V; Từ cuối giữ nguyên: An
Xin cảm ơn các Anh chị.
Bạn tham khảo hàm tự tạo
PHP:
Function Rutgonchuoi(ByVal SourceString As String) As String
    Dim Tmp, i As Byte, Res As String
    
    SourceString = RemoveMarks(SourceString)
    Tmp = Split(SourceString, " ")
    For i = 0 To UBound(Tmp) - 1
        Res = Res & Left(Tmp(i), 1)
    Next i
    Rutgonchuoi = Res & Tmp(UBound(Tmp))
End Function

Function RemoveMarks(ByVal Text As String) As String
  Dim CharCode, i As Long
  Dim ResText As String, sTmp As String
  On Error Resume Next
  sTmp = Text
  CharCode = Array(7855, 7857, 7859, 7861, 7863, 7845, 7847, 7849, 7851, 7853, 225, _
                   224, 7843, 227, 7841, 259, 226, 273, 7871, 7873, 7875, 7877, 7879, _
                   233, 232, 7867, 7869, 7865, 234, 237, 236, 7881, 297, 7883, 7889, _
                   7891, 7893, 7895, 7897, 7899, 7901, 7903, 7905, 7907, 243, 242, _
                   7887, 245, 7885, 244, 417, 7913, 7915, 7917, 7919, 7921, 250, _
                   249, 7911, 361, 7909, 432, 253, 7923, 7927, 7929, 7925)
  ResText = "aaaaaaaaaaaaaaaaadeeeeeeeeeeeiiiiiooooooooooooooooouuuuuuuuuuuyyyyy"
  For i = 0 To UBound(CharCode)
    sTmp = Replace(sTmp, ChrW(CharCode(i)), Mid(ResText, i + 1, 1))
    sTmp = Replace(sTmp, UCase(ChrW(CharCode(i))), UCase(Mid(ResText, i + 1, 1)))
  Next
  RemoveMarks = sTmp
End Function
Công thức: =Rutgonchuoi(o chua ten)
 
Upvote 0
Hàm RemoveMarks làm thêm công việc đổi hoa ký tự đầu tiên là vượt phạm vi của nó. Nên để cho hàm chính làm.
Ở đâu có cái tên 'RemoveMarks' vậy? Dùng 'Latinise' nghe êm tai hơn. Nếu muốn chuẩnn hơn thì thêm 'Unicode'.

Bỏ dấu sau khi rút gọn thì đỡ tốn năng lượng hơn.

RutGonChuoi = LCase(Application.Trim(SourceString))
a = Split(RutGonChuoi, " ")
If UBound(a) > 0 Then
For i = 0 To UBound(a) - 1
Mid(RutGonChuoi, i+1, 1) = Left(a(i), 1)
Next i
' i hiện giờ là UBound(a)
Mid(RutGonChuoi, i+1, Len(a(i)) = a(i)
End If
RutGonChuoi = Latinise(Left(RutGonChuoi, i + Len(a(i)) + 1))
Mid(RutGonChuoi, 1, 1) = UCase(Mid(RutGonChuoi, 1, 1)
 
Upvote 0
Bạn tham khảo hàm tự tạo
PHP:
Function Rutgonchuoi(ByVal SourceString As String) As String
    Dim Tmp, i As Byte, Res As String
   
    SourceString = RemoveMarks(SourceString)
    Tmp = Split(SourceString, " ")
    For i = 0 To UBound(Tmp) - 1
        Res = Res & Left(Tmp(i), 1)
    Next i
    Rutgonchuoi = Res & Tmp(UBound(Tmp))
End Function

Function RemoveMarks(ByVal Text As String) As String
  Dim CharCode, i As Long
  Dim ResText As String, sTmp As String
  On Error Resume Next
  sTmp = Text
  CharCode = Array(7855, 7857, 7859, 7861, 7863, 7845, 7847, 7849, 7851, 7853, 225, _
                   224, 7843, 227, 7841, 259, 226, 273, 7871, 7873, 7875, 7877, 7879, _
                   233, 232, 7867, 7869, 7865, 234, 237, 236, 7881, 297, 7883, 7889, _
                   7891, 7893, 7895, 7897, 7899, 7901, 7903, 7905, 7907, 243, 242, _
                   7887, 245, 7885, 244, 417, 7913, 7915, 7917, 7919, 7921, 250, _
                   249, 7911, 361, 7909, 432, 253, 7923, 7927, 7929, 7925)
  ResText = "aaaaaaaaaaaaaaaaadeeeeeeeeeeeiiiiiooooooooooooooooouuuuuuuuuuuyyyyy"
  For i = 0 To UBound(CharCode)
    sTmp = Replace(sTmp, ChrW(CharCode(i)), Mid(ResText, i + 1, 1))
    sTmp = Replace(sTmp, UCase(ChrW(CharCode(i))), UCase(Mid(ResText, i + 1, 1)))
  Next
  RemoveMarks = sTmp
End Function
Công thức: =Rutgonchuoi(o chua ten)
Theo tôi hiểu thì từ Đinh Công Tráng phải có Đctráng.
Tại sao lại là DCTráng? Tại sao lại C và T, và tại sao lại đổi thành D?
 
Upvote 0
Nhờ gợi ý và chỉ dạy của 2 bác @VetMini@batman1 , em xin phép được cập nhật lại code như sau:
PHP:
Function Rutgonchuoi(ByVal SourceString As String, Optional Removemark As Boolean = False) As String
    Dim Tmp, i As Byte, Res As String

    Tmp = Split(LCase(Trim(SourceString)), " ")
    For i = 0 To UBound(Tmp) - 1
        Res = Res & Left(Tmp(i), 1)
    Next i
    Rutgonchuoi = Res & Tmp(UBound(Tmp))
    Mid(Rutgonchuoi, 1, 1) = UCase(Mid(Rutgonchuoi, 1, 1))
   
    If Removemark Then
        Rutgonchuoi = LatiniseUnicode(Rutgonchuoi)
    End If
   
End Function

Function LatiniseUnicode(ByVal Text As String) As String
  Dim CharCode, i As Long
  Dim ResText As String, sTmp As String
  On Error Resume Next
  sTmp = Text
  CharCode = Array(7855, 7857, 7859, 7861, 7863, 7845, 7847, 7849, 7851, 7853, 225, _
                   224, 7843, 227, 7841, 259, 226, 273, 7871, 7873, 7875, 7877, 7879, _
                   233, 232, 7867, 7869, 7865, 234, 237, 236, 7881, 297, 7883, 7889, _
                   7891, 7893, 7895, 7897, 7899, 7901, 7903, 7905, 7907, 243, 242, _
                   7887, 245, 7885, 244, 417, 7913, 7915, 7917, 7919, 7921, 250, _
                   249, 7911, 361, 7909, 432, 253, 7923, 7927, 7929, 7925)
  ResText = "aaaaaaaaaaaaaaaaadeeeeeeeeeeeiiiiiooooooooooooooooouuuuuuuuuuuyyyyy"
  For i = 0 To UBound(CharCode)
    sTmp = Replace(sTmp, ChrW(CharCode(i)), Mid(ResText, i + 1, 1))
    sTmp = Replace(sTmp, UCase(ChrW(CharCode(i))), UCase(Mid(ResText, i + 1, 1)))
  Next
  LatiniseUnicode = sTmp
End Function

Công thức áp dụng cho 2 trường hợp:
- Không bỏ dấu
PHP:
=Rutgonchuoi(o chua ten)
hoac
=Rutgonchuoi(o chua ten, False)
hoac
=Rutgonchuoi(o chua ten, 0)
- Bỏ dấu
PHP:
=Rutgonchuoi(o chua ten, True)
hoac
=Rutgonchuoi(o chua ten, 1)

Hi vọng đã ổn hơn.
 
Upvote 0
Xin nhờ các anh chị chỉ giúp cách để lấy một số ký tự đầu tiên trong một chuỗi ch trước và giữ nguyên từ cuối cùng:
ví du: chuỗi vào Nguyễn Hoàng Việt An. Chuỗi ra: Nhvan; lấy từ 1 : N lấy từ 2 H; Lấy từ 3 là V; Từ cuối giữ nguyên: An
'...
Ví dụ Châu Thị Ái Ân thì tác giả bài đăng muốn có kết quả là gì?
Ctaan hay khác?
 
Upvote 0
Cám ơn các anh chị đã hỗ trợ. Em đã sử dụng được rồi. Cám ơn tất cả mọi người.
 
Upvote 0
Web KT

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

Back
Top Bottom