C 中如何獲取乙個字串的實際字元數

2021-05-23 16:43:08 字數 811 閱讀 7978

在包含中文的字串處理時,除了裁切固定長度的操作之外,有時也需要獲取乙個字串的實際字元數,比如我們限制輸入框字元數的時候。而c#提供的string.length屬性卻無法滿足我們的要求,由此,便有了下面這個方法:

/// /// 

獲取字串長度。與string.length不同的是,該方法將中文作 2 個字元計算。

///

///

目標字串

///

public static int getlength(string str)

int l = str.length;

int reallen = l;

#region 計算長度

int clen = 0;//當前長度

while (clen < l)

clen++;

}#endregion

return reallen;

}

在寫上面那個方法時,我突然想到,如果把字串轉換成byte是不是也能獲取到這個長度呢?姑且試試:

public static int getlength_obsoleted(string str)

byte data = encoding.default.getbytes(str);

return data.length;

}

這個方法也能夠讓我們如願取到字串長度。但這兩個方法孰優孰劣呢?我使用了一句110字元長度的中文進行500萬次呼叫測試,getlength 的執行效率幾乎是 getlength_obsoleted 的 4 倍!

C 中如何獲取乙個字串的實際字元數

在包含中文的字串處理時,除了裁切固定長度的操作之外,有時也需要獲取乙個字串的實際字元數,比如我們限制輸入框字元數的時候。而c 提供的string.length屬性卻無法滿足我們的要求,由此,便有了下面這個方法 獲取字串長度。與string.length不同的是,該方法將中文作 2 個字元計算。目標字...

js如何獲取乙個字串在另外乙個字串中的下標

有字串 a 34 b 123456789 要求定義乙個函式返回b字串中第乙個匹配a字串的下標,不得使用現有的方法 indexof 兩種解決辦法 substr 方法可在字串中抽取從 start 下標開始的指定數目的字元。const b,a return 1 let a 34 let b 1234567...

在乙個字串中尋找另外乙個字串

在乙個字串中尋找另外乙個字串 public class text foundit true break test system.out.println foundit?found it didn t find it 該段程式有點難以理解,主要就是if語句的理解,if searchme.charat ...