không có nghĩa là không phải làm, vì chán thì vẫn phải làm, vậy nên đành làm cho nó chán mình.
Bài viết giới thiệu các function hữu ích thường dùng trong package strings của Golang, kèm theo các method tương ứng của Python
Bài viết thực hiện trên:
$ go versionTổng số function strong package strings:
go version go1.4.2 darwin/amd64
$ godoc strings | grep ^func | grep -v 'func (' | wc -l1. func Contains(s, substr string) bool
43
Kiểm tra xem string ``s`` có chứa string ``substr`` hay không.
Go: ``strings.Contains("hvn", "vn") == true``
Python:
In [1]: 'vn' in 'hvn'Chú ý, như mọi public function trong Go, chữ cái đầu tiên được viết hoa, và động từ "contain" đã được chia cho ngôi thứ 3 nên phải có "s" ở cuối, tức "Contains" [giải thích về chia động từ ở thì hiện tại đơn trong tiếng Anh]
Out[1]: True
In [2]: 'vn' not in 'HVN'
Out[2]: True
Cả Python đều phân biệt chữ hoa chữ thường, nên chữ thường là chữ thường, chữ hoa là chữ hoa!
2. func Fields(s string) []string
Biển đổi string đầu vào thành một array chứa các string con trong đó, phân cách bởi một hoặc nhiều ký tự whitespace (định nghĩa bởi unicode.IsSpace - bao gồm dấu cách, tab, dấu xuống dòng)
Python: cắt string thành 1 list, vị trí cắt là từ/ký tự được chỉ địnhj, nếu không chỉ định gì hoặc dùng None, Python sẽ cắt tại tất cả ký tự whitespace (space, tab, newline)
In [3]: "Đến PyMi học Python".split()
Out[3]: ['Đến', 'PyMi', 'học', 'Python']
In [4]: "Đến PyMi học Python".split("PyMi")
Out[4]: ['Đến ', ' học Python']
3. func HasPrefix(s, prefix string) bool
Kiểm tra xem string ``s`` có bắt đầu bằng ``prefix`` hay không.
Python:
In [5]: "Pykachu".startswith("Py")4. func HasSuffix(s, suffix string) bool
Out[5]: True
Kiểm tra xem string ``s`` có kết thúc bằng ``suffix`` hay không.
Python:
In [6]: "phimhay.mp4".endswith(('.flv', '.mp4', '.mkv'))5. func Index(s, sep string) int
Out[6]: True
Trả về index của lần xuất hiện đầu tiên của ``sep`` trong s hoặc -1 nếu không tồn tại.
Python:
In [7]: "pythonpymi".index('y')Tương tự, LastIndex trả về index của lần xuất hiện cuối cùng (Python không có function tương ứng).
Out[7]: 1
6. func Join(a []string, sep string) string
Nối các string trong array ``a`` thành một string, sử dụng ``sep`` làm dấu phân cách
Python:
In [8]: '-'.join('Cho tôi xin một vé đi học PyMi'.split())7. func Split(s, sep string) []string
Out[8]: 'Cho-tôi-xin-một-vé-đi-học-PyMi'
Cắt string ``s`` bằng ``sep`` và trả về 1 slice chứa các substring sau khi cắt.
Nếu sep = "", trả về một slide gồm tất cả các ký tự trong s.
Vậy khi cần split tất cả các loại whitespace (cả space, cả tab...) thì dùng Fields(), còn chỉ split một ký tự bất kỳ thì dùng Split
SplitN dùng để Split với số substring được trả về chỉ định trong argument thứ 3.
Python: ``s.split(sep)``
Với sep="", Python không cần dùng function nào khác bởi một string strong Python đã là 1 iterable. Để xử lý từng ký tự, chỉ cần ``for c in s``
In [9]: 'Cho-tôi-xin-một-vé-đi-học-PyMi'.split('-')8. func Trim(s string, cutset string) string
Out[9]: ['Cho', 'tôi', 'xin', 'một', 'vé', 'đi', 'học', 'PyMi']
Cắt bỏ ``cutset`` ở đầu vào cuối của string ``s``
Xem thêm TrimLeft, TrimRight, TrimSuffix
Python: cắt bỏ các ký tự a và b cho đến khi gặp một ký tự khác. Xem thêm lstrip và rstrip để cắt bỏ một bên
In [11]: "ababbbcccaaaaaabbb".strip('ab')
Out[11]: 'ccc'
9. func Replace(s, old, new string, n int) string
Thay thế ``old`` bằng ``new`` trong string ``s`` ``n` lần. Với n<0 thì không giới hạn số lần.
Python: ``s.replace(old,new,n)``
In [1]: "PythonPyMi".replace("Py", "Jy")
Out[1]: 'JythonJyMi'
Như tên nó mô tả, các func trên trả về các string đã được biến đổi về dạng : chữ thường, viết hoa chữ đầu, chữa hoa - tương ứng.
Python: ``s.lower()``, ``s.title()``, s.upper()``
Code:
In [13]: "PYMI".lower()Code Go cho tất cả:
Out[13]: 'pymi'
In [14]: "PYMI".lower().title()
Out[14]: 'Pymi'
In [15]: "PYMI".lower().title().upper()
Out[15]: 'PYMI'
http://play.golang.org/p/aI3VJfaOtO
10 là quá nhiều cho thằng lười, vậy nên nghỉ và đi chơi thôi :3
Tham khảo:
https://docs.python.org/3/library/stdtypes.html#string-methods
Hết.
Happy coding ~^.^~ meo meo
No comments:
Post a Comment