# Python 及 C++ 字串處理 > 作者:王一哲 > 日期:2023年7月31日 ## 前言 以下的內容包含 1. 取得字串長度 2. 判斷字串是否為空字串 3. 比較字串內容是否相等 4. 複製字串 5. 連接字串 6. 改變字串內容 <br /> ## 取得字串長度 ### Python 語法 語法為 ```python len(字串名稱) ``` 回傳值格式為 int,例如 ```python s = "abcde" print(len(s)) ``` 印出的值為5。 <br /> ### C++ 語法 取得字串長度的語法有兩種 ```cpp 字串名稱.size(); 字串名稱.length(); ``` 回傳值格式為沒有正負號的整數 sizt_t,例如 ```cpp= #include <iostream> #include <string> using namespace std; int main() { string s = "abcde"; cout << s.size() << endl; cout << s.length() << endl; return 0; } ``` 兩種寫法印出的值都是5。接下來的文章中,C++ 的程式碼都會省略 int main() 以外的部分。 <br /> ## 判斷字串是否為空字串 ### Python 語法 方法1是利用字串長度,空字串的長度為0,例如 ```python s = "" if len(s) == 0: print("s is empty.") else: print("len(s) = {:d}".format(len(s))) ``` <br /> 方法2是直接將字串物件丢到 if 中,如果字串中有內容為 True,如果是空字串為 Fasle。以下的程式碼第2行在 s 前面加上 not,是為了要讓空字串觸發 if 條件成立的程式碼,加上 not 將布林值反過來。 ```python s = "" if not s: print("s is empty.") else: print("len(s) = {:d}".format(len(s))) ``` <br /> ### C++ 語法 方法1是利用字串長度,空字串的長度為0,可以用 size() 或是 length() 取得字串長度,例如 ```cpp string s = ""; if (s.size() == 0) { cout << "s is empty." << endl; } else { cout << "The length of s is " << s.size() << endl; } ``` <br /> 方法2是利用 empty(),語法為 ```cpp 字串名稱.empty(); ``` 若為空字串回傳 1,若字串有內容回傳 0。以下的程式碼第2行在 s.empty() 前面加上 !,是為了要讓空字串觸發 if 條件成立的程式碼,加上 ! 將布林值反過來。 ```cpp string s = ""; if (!s.empty()) { cout << "s is empty." << endl; } else { cout << "The length of s is " << s.size() << endl; } ``` <br /> ## 比較字串內容是否相同 ### Python 語法 使用 **==** 即可,若兩個字串內容相同回傳 True,若兩個字串內容不相同回傳 False,例如 ```python s1 = "abcde" s2 = "abcde" s3 = "bcde" print(s1 == s2) # 印出的值為 True print(s1 == s3) # 印出的值為 False ``` <br /> ### C++ 語法 使用 **==** 即可,若兩個字串內容相同回傳 1,若兩個字串內容不相同回傳 0,例如 ```cpp string s1 = "abcde", s2 = "abcde", s3 = "abcd"; cout << (s1 == s2) << endl; // 印出的值為 1 cout << (s1 == s3) << endl; // 印出的值為 0 ``` <br /> ## 複製字串 ### Python 語法 使用 **=** 即可,可以配合索引值複製字串中的部分內容,例如 ```python s1 = "abcde" s2 = s1 # s2 內容為 abcde s3 = s1[1:4] # s3 內容為 bcd,由索引值 1 開始,不包含結尾索引值 4 的內容 s4 = s1[:4] # s4 內容為 abcd,由索引值 0 開始,不包含結尾索引值為 4 的內容 s5 = s1[1:] # s5 內容為 bcde,由索引值 1 開始直到字串結尾 ``` <br /> ### C++ 語法 使用 **=** 即可,可以配合 substr 複製字串中的部分內容,substr 的語法為 ```cpp 字串名稱.substr(起點索引值, 取出的字串長度); ``` 取出的字串長度可以省略,預設值為取到字串結尾處。例如 ```cpp string s1 = "abcde"; string s2 = s1; // s2 內容為 abcde string s3 = s1.substr(1, 3); // s3 內容為 bcd,由索引值 1 開始,取出字串的長度為 3 string s4 = s1.substr(0, 4); // s4 內容為 abcd,由索引值 0 開始,取出字串的長度為 4 string s5 = s1.substr(1); // s5 內容為 bcde,由索引值 1 開始直到字串字串結尾 ``` <br /> ## 連接字串 ### Python 語法 使用 **+** 即可,例如 ```python s1 = "abcde" s2 = "fghij" s3 = s1 + s2 # s3 內容為 abcdefghij ``` <br /> ### C++ 語法 使用 **+** 即可,例如 ```cpp string s1 = "abcde", s2 = "fghij"; string s3 = s1 + s2; // s3 內容為 abcdefghij ``` <br /> ## 改變字串內容 ### Python 語法 由於 Python 的字串物件無法改變內容,如果用以下的語法會出錯 ```python s = "abcde" s[0] = "f" ``` 正確的語法是用 **+** 並配合索引值取出要留下的字串內容,重新定義要改變內容的字串物件,例如 ```python s = "abcde" s = "f" + s[1:] # s 內容為變為 fbcde ``` <br /> ### C++ 語法 C++ 的語法有兩種,方法1是配合索引值取代字串內容,輸入的內容格式為字元 (char),記得要用單引號,例如 ```cpp string s = "abcde"; s[0] = 'f'; // s 內容為變為 fbcde ``` <br /> 方法2是用 **+** 並配合 substr 取出要留下的字串內容,例如 ```cpp string s = "abcde"; s = "f" + s.substr(1); // s 內容為變為 fbcde ``` <br /> ## 結語 以上是我目前常用到的字串處理內容,如果之後有遇到其它需求會再補充內容。 --- ###### tags:`C++`、`Python`
×
Sign in
Email
Password
Forgot password
or
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.