OC 第五講 字串

2021-06-23 00:23:56 字數 4546 閱讀 2060

一天又一天,一日又一日,一年又會是一年。時間過得太快了,每天學習都在學習oc,可是就是覺得時間太少了,恨不得一天當48小時來過。每天都有學不完的,研究不了的事,人生總有這麼多的無奈,與無奈,無奈。

下面就是今天學習的字串的個類方法:

nsstring *str = @"這是我們第一次嘗試";

nslog(@"%lu", [str length]);   //獲取字串長度

nslog(@"%lu", sizeof(unichar));

/* nsstring 字串類常用方法*/

//1.建立乙個字串物件

//(1)初始化方法init***

//nsstring *erdong = @"二東";  存在在常量區

nsstring *erdong = [[nsstring alloc] initwithformat:@"二東%d%d%@", 2, 50, str]; // 存在堆

nsstring *erdong2 = [[nsstring alloc] initwithstring:erdong]; //字串物件

nslog(@"erdong  :%p ", erdong);

nslog(@"erdong2 :%p ", erdong2);

nslog(@"%@", erdong);

//(2)便利構造器

nsstring *erdong13 = [nsstring stringwithformat:@"%@!!!", erdong];

nslog(@"%@", erdong13);

nsstring *shiyao = [nsstring stringwithformat:@"gafak"];

//2.判斷字串是否包含字首(字尾)

if ([shiyao hasprefix:@"ga"]) else

if ([shiyao hassuffix:@"ak"]) else

//3.返回乙個字串在另乙個字串裡的範圍沒有找到length返回0;

nsrange range = [erdong13 rangeofstring:@"250"];

//檢視range結構體變數的location成員變數

和 length成員變數

nslog(@"location :%lu length: %lu", range.location, range.length);

//判斷乙個字串中是否包含子串的方法

if (range.length != 0) else

//4.字串擷取

nsstring *caiyangzhengyu = [[nsstring alloc] initwithformat:@"蔡楊振宇"];

nslog(@"%@", [caiyangzhengyu substringfromindex:2]);    //從下標2開始輸出後面的

nslog(@"%@",[caiyangzhengyu substringtoindex:2]);       //從下標2開始輸出前面的

nsrange r = ; //從下標1開始,輸出長度為2的

nslog(@"%@", [caiyangzhengyu substringwithrange:r]); //取範圍內的字串

//5.拼接字串相當於建立乙個新得物件,放拼接成得字串

nsstring *caiyangzhengyuerdong3 = [[nsstring alloc] initwithformat:@"%@", erdong13];

nslog(@"%@", caiyangzhengyuerdong3);  //拼接乙個物件

//nsstring 拼接的真面目!!產生乙個新的字串物件

nslog(@"蔡楊振宇      :%p", caiyangzhengyu);

nslog(@"蔡楊振宇二東   :%p", caiyangzhengyuerdong3);

//6.替換字串

nsrange r1 = ;  //將蔡楊振宇的下標為2的長度為3 的字串子串給換掉。「不管傳進去幾個「,250就是沒有了!!

nsstring *a = [caiyangzhengyuerdong3 stringbyreplacingcharactersinrange:r1 withstring:@"07"];

nslog(@"%@", a);

//將所有的 7 換成 「七」

nsstring *string = @"12341255647679756789015678765456786524";

nslog(@"%@", [string stringbyreplacingoccurrencesofstring:@"7" withstring:@"七"]);

//7.比較字串

nsstring *stra = @"a";

nsstring *strb = @"b";

nsstring *strc = @"c";

nsstring *strbb = @"bb";

nsstring *strba = @"ba";

nsstring *stra2 = @"a";

nslog(@"  a b  :%ld", [stra compare:strb]);

nslog(@"  c a  :%ld", [strc compare:stra]);

nslog(@"  a a2 :%ld", [stra compare:stra2]);

nslog(@" bb ba :%ld", [strbb compare:strba]);

nslog(@"%ld", [@"老王" compare:@"小王"]);

nslog(@"%ld", [@"王子龍" compare:@"孫嘉懿"]);

//8.字串和數值型別轉換

//(1)基本資料型別->字串物件

int age = 20;  //@"20"

nsstring *strage = [nsstring stringwithformat:@"%d", age];

nslog(@"%@", strage);

//(2)字串物件->基本資料型別

nslog(@"%d", [strage intvalue] + 1);

//9.大小寫轉換操作

nsstring *casestring = @"in the compare:"

"methods, the range argument specifies the subrange"

"rather than the whole, of the receiver "

"to use in the comparison. "

nslog(@"%@", [casestring uppercasestring]);    //全大寫

nslog(@"%@", [casestring lowercasestring]);    //全小寫

nslog(@"%@", [casestring capitalizedstring]);  //每個單詞得首字母大寫(以空格為介)

/* msmutablestring 可變字串常用方法 */

//1.建立字串物件

nsmutablestring *mstring = [nsmutablestring stringwithformat:@"今天很糟糕"];

//2.字串拼接

改變原來得mstring

nslog(@"%@", mstring);

//3.插入字串

[mstring insertstring:@"真的" atindex:2];

nslog(@"%@", mstring);

//4.刪除字串

nsrange r4 = ;

[mstring deletecharactersinrange:r4];

nslog(@"%@", mstring);

/*題(1)判斷字串@「abcd_efgk」中是否有efgk,如果有將efgk轉換為wxyz,並讓字串的大寫字母轉成小寫,輸出修改完成的字串。

(2)給定乙個檔名,判斷字串中是否以「png」結尾,如果是就替換成「jpg」,如果不是,就拼接」.jpg」。*/

//1.

nsstring *st = [[nsstring alloc] initwithformat:@"abcd_efgk"];

nsrange ra = [st rangeofstring:@"efgk"];

nsstring *st1 = [[nsstring alloc] init];

nsstring *st2 = [[nsstring alloc] init];

if (ra.length) ;  //擷取每一字元

nsstring *s = [st1 substringwithrange:j];

if ([s compare:@"a"] < 0) }

} //2.

nsstring *music = [nsstring stringwithformat:@"1245.png"];

if ([music hassuffix:@"png"]) else

}

第五周作業 平衡字串

一 題目 乙個長度為 n 的字串 s,其中僅包含 q w e r 四種字元。如果四種字元在字串 現次數均為 n 4,則其為乙個平衡字串。現可以將 s 中連續的一段子串替換成相同長度的只包含那四個字元的任意字串,使其變為乙個平衡字串,問替換子串的最小長度?如果 s 已經平衡則輸出0。二 輸入 一行字元...

多校第五場(字串)

5783.divide the sequence 題意 給出一段序列,盡可能多得分割序列使得每段字首和非負。分析 既然字首和非負,那麼從後往前遍歷,若非負則 include include include include include include include include include...

oc 字串擷取

從0 位置開始擷取擷取3 個字元 nsstring string1 this is a string if string1.length 3 if string1 hasprefix th substringfromindex 以指定位置開始 包括指定位置的字元 幷包括之後的全部字元 nsstrin...