這幾天刷面試題碰到這樣乙個問題:
編寫乙個擷取字串的函式,輸入為乙個字串和位元組數,輸出為按位元組擷取的字串,但要保證漢字不被擷取半個,如「我abc」,4,應該擷取「我ab」,輸入「我 abc 漢 def」,6,應該輸出「我 abc」,而不是「我 abc+漢的半個」。
public string tointerceptstring1(string s, int len)
return new string(buf, 0, len);
}
於是自己又想了另外一種辦法,如下:
public string tointerceptstring2(string s, int len)
if(len > s.getbytes().length)
// 判斷系統編碼,
int n = systemencode(s);
byte buf = s.getbytes();
int count = 0;
for (int i = 0; i < len; i++)
// 如果為n(乙個漢字所佔位元組),就賦值為0
if (count == n)
// 如果到達指定的len,且count小於n,就捨棄這幾個位元組
if (i == len - 1 && count < n)
}return new string(buf, 0, len);
}/**
* 判斷系統編碼,並返回當前編碼的乙個漢字所佔位元組
* * @param s
* @return
*/private int systemencode() else
}
這樣就可以了,看來還是要自己多想想,多寫寫。 擷取字串
static function blogsummary str,len 100 else out valtmp break tmp tmpstr outlen mb strlen valtmp,charset out val.rs 2 key right rs 2 key unset rs tags...
擷取字串
擷取字串一般使用string類的substring方法。public string substring int beginindex 返回該字串子串的新字串。子字串開始於指定的位置並且擴充套件到該字串的結尾。public string substring int beginindex,int end...
擷取字串
題目要求 編寫乙個擷取字串的程式,輸入為乙個字串和乙個位元組數字,輸出為按位元組擷取的字串,保證漢字不被擷取半個,如 eg 我abc 4 擷取 我ab eg 我abc漢def 6 擷取 我abc 而不是 我abc 漢 的半個解題思路 那麼擷取字串時考慮當前字元是否為漢字的一部分,如果不是漢字則計數位...