今天要擷取乙個文件,發現c#中substring預設是將漢字當乙個位元組來擷取的,但是我需要把漢字按照2個位元組來算。
比如:
str="雪潔hello"
我想要前5個位元組的字元,也就是"雪潔h"。
如何處理?
c#中substring預設是將漢字當乙個位元組來擷取的,那麼如何按位元組數擷取字串?
答案:
using例項效果:system;
using
system.collections.generic;
using
system.web;
using
system.web.ui;
using
system.web.ui.webcontrols;
using
system.text;
public
partial
class
_default : system.web.ui.page
private
static encoding _encoding = system.text.encoding.getencoding("
gb2312");
//第一種方法
private
string substringbyte(string text, int startindex, int
length)
//第二種方法
private
string cutsubstring(string s, int
length)
else}}
//如果i為奇數時,處理成偶數
if (i % 2 == 1
)
return system.text.encoding.unicode.getstring(bytes, 0
, i);}}
不用多說相信大家能看出區別,和實現方法,如有其他需求可自行新增
順便感謝kofip
分享的第三種方法,效果圖上直接展示出其效果,至於效率問題未測試,有興趣的朋友可以測試下。
按位元組數擷取字串
1.字串設定長度,長度限制 nsstring stringwithhtml nsstring str length cgfloat length 如果有寬度限制的話,建議用 if str.length length 缺點是字母或數字或中文與數字字母混合時計算有誤,還會執行下面方法,但比較保險 獲取字...
根據位元組數擷取字串
擷取字串相信大家基本都用過,但是一般都是用string.length判斷字串的長度後進行擷取。這樣如果一組字串裡既有英文 數字又有中文,那麼擷取出來的字串還是會長短不一,因為每個英文或數字是佔乙個位元組而每個漢字佔兩個位元組。這時,我們可以通過位元組數來擷取,寫了個方法 擷取指定長度的字串 擷取前的...
根據位元組數擷取字串
問題描述 編寫乙個擷取字串的函式,輸入為乙個字串和位元組數,輸出為按位元組擷取的字串。但是要保證漢字不被截半個,例如 人abc 4,應該截為 人ab 輸入 人abc們 6,應該截為 人abc 而不是截為 人ab 們的半個 package com.wyl 擷取字串 author wyl public ...