python字元串方法大全

来源:https://www.cnblogs.com/f-ck-need-u/archive/2018/06/03/9127699.html
-Advertisement-
Play Games

python中字元串對象提供了很多方法來操作字元串,功能相當豐富。 這些方法的使用說明見 "官方文檔:string methods" ,本文對它們進行詳細解釋,各位以後可將本文當作手冊。 這裡沒有模式匹配(正則)相關的功能。python中要使用模式匹配相關的方法操作字元串,需要 導入re模塊。關於正 ...


python中字元串對象提供了很多方法來操作字元串,功能相當豐富。

print(dir(str))

[..........'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']

這些方法的使用說明見官方文檔:string methods,本文對它們進行詳細解釋,各位以後可將本文當作手冊。

這裡沒有模式匹配(正則)相關的功能。python中要使用模式匹配相關的方法操作字元串,需要import re導入re模塊。關於正則模式匹配,參見:re Module Contents

註意,python中字元串是不可變對象,所以所有修改和生成字元串的操作的實現方法都是另一個記憶體片段中新生成一個字元串對象。例如,'abc'.upper()將會在劃分另一個記憶體片段,並將返回的ABC保存在此記憶體中。

下文出現的"S"表示待操作的字元串。本文沒有對casefold,encode,format,format_map進行介紹,前兩者和unicode有關,後兩者內容有點太多。

1.大小寫轉換

1.1 lower、upper

S.lower()
S.upper()

返回S字元串的小寫、大寫格式。(註意,這是新生成的字元串,在另一片記憶體片段中,後文將不再解釋這種行為)

例如:

>>> print('ab XY'.lower())
ab xy
>>> print('ab XY'.upper())
AB XY

1.2 title、capitalize

S.title()
S.capitalize()

前者返回S字元串中所有單詞首字母大寫且其他字母小寫的格式,後者返迴首字母大寫、其他字母全部小寫的新字元串。

例如:

>>> print('ab XY'.title())
Ab Xy
>>> print('abc DE'.capitalize())
Abc de

1.3 swapcase

S.swapcase()

swapcase()對S中的所有字元串做大小寫轉換(大寫-->小寫,小寫-->大寫)。

>>> print('abc XYZ'.swapcase())
ABC xyz

2.isXXX判斷

2.1 isalpha,isdecimal,isdigit,isnumeric,isalnum

S.isdecimal()
S.isdigit()
S.isnumeric()
S.isalpha()
S.isalnum()

測試字元串S是否是數字、字母、字母或數字。對於非Unicode字元串,前3個方法是等價的。

例如:

>>> print('34'.isdigit())
True
>>> print('abc'.isalpha())
True
>>> print('a34'.isalnum())
True

2.2 islower,isupper,istitle

S.islower()
S.isupper()
S.istitle()

判斷是否小寫、大寫、首字母大寫。要求S中至少要包含一個字元串字元,否則直接返回False。例如不能是純數字。

註意,istitle()判斷時會對每個單詞的首字母邊界判斷。例如,word1 Word2word1_Word2word1()Word2中都包含兩個單詞,它們的首字母都是"w"和"W"。因此,如果用istitle()去判斷它們,將返回False,因為w是小寫。

例如:

>>> print('a34'.islower())
True
>>> print('AB'.isupper())
True
>>> print('Aa'.isupper())
False
>>> print('Aa Bc'.istitle())
True
>>> print('Aa_Bc'.istitle())
True
>>> print('Aa bc'.istitle())
False
>>> print('Aa_bc'.istitle())
False

# 下麵的返回False,因為非首字母C不是小寫
>>> print('Aa BC'.istitle())
False

2.3 isspace,isprintable,isidentifier

S.isspace()
S.isprintable()
S.isidentifier()

分別判斷字元串是否是空白(空格、製表符、換行符等)字元、是否是可列印字元(例如製表符、換行符就不是可列印字元,但空格是)、是否滿足標識符定義規則。

例如:

  1. 判斷是否為空白。沒有任何字元是不算是空白。

    >>> print(' '.isspace())
    True
    >>> print(' \t'.isspace())
    True
    >>> print('\n'.isspace())
    True
    >>> print(''.isspace())
    False
    >>> print('Aa BC'.isspace())
    False
  2. 判斷是否是可列印字元。

    >>> print('\n'.isprintable())
    False
    >>> print('\t'.isprintable())
    False
    >>> print('acd'.isprintable())
    True
    >>> print(' '.isprintable())
    True
    >>> print(''.isprintable())
    True
  3. 判斷是否滿足標識符定義規則。
    標識符定義規則為:只能是字母或下劃線開頭、不能包含除數字、字母和下劃線以外的任意字元。

    >>> print('abc'.isidentifier())
    True
    >>> print('2abc'.isidentifier())
    False
    >>> print('abc2'.isidentifier())
    True
    >>> print('_abc2'.isidentifier())
    True
    >>> print('_abc_2'.isidentifier())
    True
    >>> print('_Abc_2'.isidentifier())
    True
    >>> print('Abc_2'.isidentifier())
    True

3.填充

3.1 center

S.center(width[, fillchar])

將字元串居中,左右兩邊使用fillchar進行填充,使得整個字元串的長度為width。fillchar預設為空格。如果width小於字元串的長度,則無法填充直接返回字元串本身(不會創建新字元串對象)。

例如:

  1. 使用下劃線填充並居中字元串

    >>> print('ab'.center(4,'_'))
    _ab_
    >>> print('ab'.center(5,'_'))
    __ab_
  2. 使用預設的空格填充並居中字元串

    >>> print('ab'.center(4))
     ab 
    >>> print(len('ab'.center(4)))
    4
  3. width小於字元串長度

    >>> print('abcde'.center(3))
    abcde

3.2 ljust和rjust

S.ljust(width[, fillchar])
S.rjust(width[, fillchar])

ljust()使用fillchar填充在字元串S的右邊,使得整體長度為width。rjust()則是填充在左邊。如果不指定fillchar,則預設使用空格填充。

如果width小於或等於字元串S的長度,則無法填充,直接返回字元串S(不會創建新字元串對象)。

例如:

>>> print('xyz'.ljust(5,'_'))
xyz__
>>> print('xyz'.rjust(5,'_'))
__xyz

3.3 zfill

S.zfill(width)

用0填充在字元串S的左邊使其長度為width。如果S前右正負號+/-,則0填充在這兩個符號的後面,且符號也算入長度。

如果width小於或等於S的長度,則無法填充,直接返回S本身(不會創建新字元串對象)。

>>> print('abc'.zfill(5))
00abc

>>> print('-abc'.zfill(5))
-0abc

>>> print('+abc'.zfill(5))
+0abc

>>> print('42'.zfill(5))
00042

>>> print('-42'.zfill(5))
-0042

>>> print('+42'.zfill(5))
+0042

4.子串搜索

4.1 count

S.count(sub[, start[, end]])

返回字元串S中子串sub出現的次數,可以指定從哪裡開始計算(start)以及計算到哪裡結束(end),索引從0開始計算,不包括end邊界。

例如:

>>> print('xyabxyxy'.count('xy'))
3

# 次數2,因為從index=1算起,即從'y'開始查找,查找的範圍為'yabxyxy'
>>> print('xyabxyxy'.count('xy',1))
2

# 次數1,因為不包括end,所以查找的範圍為'yabxyx'
>>> print('xyabxyxy'.count('xy',1,7))
1

# 次數2,因為查找的範圍為'yabxyxy'
>>> print('xyabxyxy'.count('xy',1,8))
2

4.2 endswith和startswith

S.endswith(suffix[, start[, end]])
S.startswith(prefix[, start[, end]])

endswith()檢查字元串S是否已suffix結尾,返回布爾值的True和False。suffix可以是一個元組(tuple)。可以指定起始start和結尾end的搜索邊界。

同理startswith()用來判斷字元串S是否是以prefix開頭。

例如:

  1. suffix是普通的字元串時。

    >>> print('abcxyz'.endswith('xyz'))
    True
     
    # False,因為搜索範圍為'yz'
    >>> print('abcxyz'.endswith('xyz',4))
    False
     
    # False,因為搜索範圍為'abcxy'
    >>> print('abcxyz'.endswith('xyz',0,5))
    False
    >>> print('abcxyz'.endswith('xyz',0,6))
    True
  2. suffix是元組(tuple)時,只要tuple中任意一個元素滿足endswith的條件,就返回True。

    # tuple中的'xyz'滿足條件
    >>> print('abcxyz'.endswith(('ab','xyz')))
    True
     
    # tuple中'ab'和'xy'都不滿足條件
    >>> print('abcxyz'.endswith(('ab','xy')))
    False
     
    # tuple中的'z'滿足條件
    >>> print('abcxyz'.endswith(('ab','xy','z')))
    True

4.3 find,rfind和index,rindex

S.find(sub[, start[, end]])
S.rfind(sub[, start[, end]])¶
S.index(sub[, start[, end]])
S.rindex(sub[, start[, end]])

find()搜索字元串S中是否包含子串sub,如果包含,則返回sub的索引位置,否則返回"-1"。可以指定起始start和結束end的搜索位置。

index()和find()一樣,唯一不同點在於當找不到子串時,拋出ValueError錯誤。

rfind()則是返回搜索到的最右邊子串的位置,如果只搜索到一個或沒有搜索到子串,則和find()是等價的。

同理rindex()。

例如:

>>> print('abcxyzXY'.find('xy'))
3
>>> print('abcxyzXY'.find('Xy'))
-1
>>> print('abcxyzXY'.find('xy',4))
-1

>>> print('xyzabcabc'.find('bc'))
4
>>> print('xyzabcabc'.rfind('bc'))
7

>>> print('xyzabcabc'.rindex('bcd'))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: substring not found

可以使用in操作符來判斷字元串S是否包含子串sub,它返回的不是索引位置,而是布爾值。

>>> 'xy' in 'abxycd'
True
>>> 'xyz' in 'abxycd'
False

5.替換

5.1 replace

S.replace(old, new[, count])

將字元串中的子串old替換為new字元串,如果給定count,則表示只替換前count個old子串。如果S中搜索不到子串old,則無法替換,直接返回字元串S(不創建新字元串對象)。

>>> print('abcxyzoxy'.replace('xy','XY'))
abcXYzoXY
>>> print('abcxyzoxy'.replace('xy','XY',1))
abcXYzoxy
>>> print('abcxyzoxy'.replace('mn','XY',1))
abcxyzoxy

5.2 expandtabs

S.expandtabs(N)

將字元串S中的\t替換為一定數量的空格。預設N=8。

註意,expandtabs(8)不是將\t直接替換為8個空格。例如'xyz\tab'.expandtabs()會將\t替換為5個空格,因為"xyz"占用了3個字元位。

另外,它不會替換換行符(\n\r)時。

例如:

>>> '01\t012\t0123\t01234'.expandtabs(4)
'01  012 0123    01234'

>>> '01\t012\t0123\t01234'.expandtabs(8)
'01      012     0123    01234'

>>> '01\t012\t0123\t01234'.expandtabs(7)
'01     012    0123   01234'

>>> print('012\t0123\n01234'.expandtabs(7))
012    0123
01234

5.3 translate和maketrans

S.translate(table)
static str.maketrans(x[, y[, z]])

str.maketrans()生成一個字元一 一映射的table,然後使用translate(table)對字元串S中的每個字元進行映射。

如果你熟悉Linux,就知道tr命令,translate()實現的功能和tr是類似的。

例如,現在想要對"I love fairy"做一個簡單的加密,將裡面部分字元都替換為數字,這樣別人就不知道轉換後的這句話是什麼意思。

>>> in_str='abcxyz'
>>> out_str='123456'

# maketrans()生成映射表
>>> map_table=str.maketrans(in_str,out_str)

# 使用translate()進行映射
>>> my_love='I love fairy'
>>> result=my_love.translate(map_table)
>>> print(result)
I love f1ir5

註意,maketrans(x[, y[, z]])中的x和y都是字元串,且長度必須相等。

如果maketrans(x[, y[, z]])給定了第三個參數z,這這個參數字元串中的每個字元都會被映射為None。

例如,不替換"o"和"y"。

>>> in_str='abcxyz'
>>> out_str='123456'
>>> map_table=str.maketrans(in_str,out_str,'ay')
>>> my_love='I love fairy'
>>> result=my_love.translate(map_table)
>>> print(result)
I love fir

6.分割

6.1 partition和rpartition

S.partition(sep)
S.rpartition(sep)

搜索字元串S中的子串sep,並從sep處對S進行分割,最後返回一個包含3元素的元組:sep左邊的部分是元組的第一個元素,sep自身是元組的二個元素,sep右邊是元組的第三個元素。

partition(sep)從左邊第一個sep進行分割,rpartition(sep)從右邊第一個sep進行分割。

如果搜索不到sep,則返回的3元素元組中,有兩個元素為空。partition()是後兩個元素為空,rpartition()是前兩個元素為空。

例如:

# 只搜索到一個sep時,兩者結果相同
>>> print('abcxyzopq'.partition('xy'))
('abc', 'xy', 'zopq')
>>> print('abcxyzopq'.rpartition('xy'))
('abc', 'xy', 'zopq')

# 搜索到多個sep時,分別從左第一個、右第一個sep分割
>>> print('abcxyzxyopq'.partition('xy'))
('abc', 'xy', 'zxyopq')
>>> print('abcxyzxyopq'.rpartition('xy'))
('abcxyz', 'xy', 'opq')

# 搜索不到sep
>>> print('abcxyzxyopq'.partition('xyc'))
('abcxyzxyopq', '', '')
>>> print('abcxyzxyopq'.rpartition('xyc'))
('', '', 'abcxyzxyopq')

6.2 split、rsplit和splitlines

S.split(sep=None, maxsplit=-1)
S.rsplit(sep=None, maxsplit=-1)
S.splitlines([keepends=True])

都是用來分割字元串,並生成一個列表。

split()根據sep對S進行分割,maxsplit用於指定分割次數,如果不指定maxsplit或者給定值為"-1",則會從做向右搜索並且每遇到sep一次就分割直到搜索完字元串。如果不指定sep或者指定為None,則改變分割演算法:以空格為分隔符,且將連續的空白壓縮為一個空格。

rsplit()split()是一樣的,只不過是從右邊向左邊搜索。

splitlines()用來專門用來分割換行符。雖然它有點像split('\n')split('\r\n'),但它們有些區別,見下文解釋。

首先是split()的示例分析(rsplit()示例略)。

# sep為單個字元時
>>> '1,2,3'.split(',')
['1', '2', '3']

>>> '1,2,3'.split(',',1)
['1', '2,3']    # 只分割了一次

>>> '1,2,,3'.split(',')
['1', '2', '', '3']  # 不會壓縮連續的分隔符

>>> '<hello><><world>'.split('<')
['', 'hello>', '>', 'world>']

# sep為多個字元時
>>> '<hello><><world>'.split('<>')
['<hello>', '<world>']

# 不指定sep時
>>> '1 2 3'.split()
['1', '2', '3']

>>> '1 2 3'.split(maxsplit=1)
['1', '2 3']

>>> '   1    2   3   '.split()
['1', '2', '3']

>>> '   1    2   3  \n'.split()
['1', '2', '3']

# 顯式指定sep為空格、製表符、換行符時
>>> ' 1  2  3  \n'.split(' ')
['', '1', '', '2', '', '3', '', '\n']

>>> ' 1  2  3  \n'.split('\t')
[' 1  2  3  \n']

>>> ' 1 2\n3 \n'.split('\n')
[' 1 2', '3 ', '']  # 註意列表的最後一項''

>>> ''.split('\n')
['']

再是splitlines()的示例分析。

splitlines()中可以指定各種換行符,常見的是\n\r\r\n。如果指定keepends為True,則保留所有的換行符。

>>> 'ab c\n\nde fg\rkl\r\n'.splitlines()
['ab c', '', 'de fg', 'kl']

>>> 'ab c\n\nde fg\rkl\r\n'.splitlines(keepends=True)
['ab c\n', '\n', 'de fg\r', 'kl\r\n']

將split()和splitlines()相比較一下:

#### split()
>>> ''.split('\n')
['']            # 因為沒換行符可分割

>>> 'One line\n'.split('\n')
['One line', '']

#### splitlines()
>>> "".splitlines()
[]              # 因為沒有換行符可分割

>>> 'Two lines\n'.splitlines()
['Two lines']

7.join

S.join(iterable)

將可迭代對象(iterable)中的字元串使用S連接起來。註意,iterable中必須全部是字元串類型,否則報錯。

如果你還是python的初學者,還不知道iterable是什麼,卻想來看看join的具體語法,那麼你可以暫時將它理解為:字元串string、列表list、元組tuple、字典dict、集合set。

例如:

  1. 字元串

    >>> L='python'
    >>> '_'.join(L)
    'p_y_t_h_o_n'
  2. 元組

    >>> L1=('1','2','3')
    >>> '_'.join(L1)
    '1_2_3'
  3. 集合。註意,集合無序。

    >>> L2={'p','y','t','h','o','n'}
    >>> '_'.join(L2)
    'n_o_p_h_y_t'
  4. 列表

    >>> L2=['py','th','o','n']
    >>> '_'.join(L2)
    'py_th_o_n'
  5. 字典

    >>> L3={'name':"malongshuai",'gender':'male','from':'China','age':18}
    >>> '_'.join(L3)
    'name_gender_from_age'
  6. iterable參與迭代的部分必須是字元串類型,不能包含數字或其他類型。

    >>> L1=(1,2,3)
    >>> '_'.join(L1)
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: sequence item 0: expected str instance, int found

    以下兩種也不能join。

    >>> L1=('ab',2)
    >>> L2=('AB',{'a','cd'})

8.修剪:strip、lstrip和rstrip

S.strip([chars])
S.lstrip([chars])
S.rstrip([chars])

分別是移除左右兩邊、左邊、右邊的字元char。如果不指定chars或者指定為None,則預設移除空白(空格、製表符、換行符)。

唯一需要註意的是,chars可以是多個字元序列。在移除時,只要是這個序列中的字元,都會被移除。

例如:

  1. 移除單個字元或空白。

    >>> '   spacious   '.lstrip()
    'spacious   '
     
    >>> '   spacious   '.rstrip()
    '   spacious'
     
    >>> 'spacious   '.lstrip('s')
    'pacious   '
     
    >>> 'spacious'.rstrip('s')
    'spaciou'

    2.移除字元中的字元。

    >>> print('www.example.com'.lstrip('cmowz.'))
    example.com
    >>> print('wwwz.example.com'.lstrip('cmowz.'))
    example.com
    >>> print('wwaw.example.com'.lstrip('cmowz.'))
    aw.example.com
    >>> print('www.example.com'.strip('cmowz.'))
    'example'

由於www.example.com的前4個字元都是字元序列cmowz.中的字元,所以都被移除,而第五個字元e不在字元序列中,所以修剪到此結束。同理wwwz.example.com

wwaw.example.com中第3個字元a不是字元序列中的字元,所以修剪到此結束。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一、URL 傳參 當使用 navigateTo() 方法跳轉頁面的時候,可以在 url 後面接 query 參數 然後在 Page 頁面的生命周期函數 onLoad 中可以接收到這些參數 這種方式只能通過 navigateTo 發送,onLoad 接收 所以只能用於跳轉到非 tabbar 的頁面 二 ...
  • 大家好,下麵我說一下我對面向對象的理解,不會講的很詳細,因為有很多人的博客都把他寫的很詳細了,所以,我儘可能簡單的通過一些代碼讓初學者可以理解面向對象及他的三個要素。 python是一門面向對象編程語言,對面相對象語言編碼的過程叫做面向對象編程。 面向對象時一種思想,與之相對對的是面向過程。我們先簡 ...
  • 前言 目前以LabVIEW為主要開發工具,熟悉常規開發框架(隊列+狀態機),個人用得比較多也感覺比較好用和強大的(JKI,AMC),也用它們開發過一些測試平臺,但感覺到了一個瓶頸期,想尋求突破,提升LabVIEW的編程水平和思想,所以自己開始學習LVOOP,寫此博文,一為自己知識的總結和思考消化,二 ...
  • 說到提高檢索效率,就必然提到索引。今天就來為大家講述搜索引擎中最常見的索引方式——倒排索引。 ...
  • 1.String對象不可變 String對象不可變,只讀。任何指向它的引用都不能改變它的內容。改變String內容意味著創建了一個新的String對象。 String 對象作為方法參數時都會複製一份引用(不是複製對象),而引用指向的對象一直呆在單一物理位置上。 2.重載操作符和StringBuild ...
  • 可以通過修改pom文件來添加一個javax.servlet-api-3.1.0.jar的jar包,找到你的pom.xml文件添加代碼如下: <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</art ...
  • 本文分析Dubbo服務暴露的實現原理,併進行詳細的代碼跟蹤與解析。 ...
  • 這是我自己複習總結的,分享給大家,有不足和需要修改的地方,望大家指正,謝謝。 https://pan.baidu.com/s/14GrfC34CmjpnlND8MiT0YA ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...