我有一个文本文件 它是这样的格式
例如:
123
哈哈123
(注意,第一行前面是两个空格)现在我想用一个标志的方法 去读“123”现在只能用下面的方法:
第一行用SubString(4,3)
第二行用SubString(2,3)奇怪,中文不是占两个字节吗,按道理第二行也用SubString(4,3)啊
现在我该怎么办呢 现在文件前面保证是4个空格的大小,两个汉字好也是4个空格的大小
现在读“123” 有什么好的方法吗》
例如:
123
哈哈123
(注意,第一行前面是两个空格)现在我想用一个标志的方法 去读“123”现在只能用下面的方法:
第一行用SubString(4,3)
第二行用SubString(2,3)奇怪,中文不是占两个字节吗,按道理第二行也用SubString(4,3)啊
现在我该怎么办呢 现在文件前面保证是4个空格的大小,两个汉字好也是4个空格的大小
现在读“123” 有什么好的方法吗》
不过string里的操作substring是算长度,一个汉字长度为1
int i = Encoding.Default.GetByteCount(s); //i=4
int j = s.Length; //j=2;
a = System.Text.RegularExpressions.Regex.Split(a, @"\s+")[2];
2.呢 现在文件前面保证是4个空格的大小,两个汉字好也是4个空格的大小
string s1=" 123";
string s2="哈哈123";
string ss=getstr(s1);//123
string sss=getstr(s2);//123
string getstr(string s)
{
byte [] temp=Encoding.Default.GetBytes[s];
return Encoding.Default.GetString(temp,4,temp.Length);
}
int k = Encoding.Default.GetByteCount(s);
而且其中和Encoding.XXX你还必须选择正确的编码格式,一般用默认是正确的。可选的还有UTF8,Unicode等。如果这个不正确,有可能导致计算的结果不正确。2:我想了一下如果你想要解决这个问题,比较好的方式是改变你的这个文件的编码方式,你的这个编码方式不合理。修改这个文件可以解决这个问题。
如果你一定要用这个方法来解决这个问题,就只能是自己解决了。
s.SubString(s.Indexof("123"),3);
这可以解决。
用正则就行了
\d 数字:[0-9]
\D 非数字: [^0-9]
\s 空白字符:[ \t\n\x0B\f\r]
\S 非空白字符:[^\s]
\w 单词字符:[a-zA-Z_0-9]
\W 非单词字符:[^\w]
string s2 = " 456";
MessageBox.Show(Regex.Match(s1, @"(?<=( ){4}|[\u4e00-\u9fa5]{2})\w{3}").Value);
MessageBox.Show(Regex.Match(s2, @"(?<=( ){4}|[\u4e00-\u9fa5]{2})\w{3}").Value);
return Encoding.Default.GetString(temp,4,temp.Length-4);