关于读取ini文件的问题 找index(",")能系统直接给的有找第一个和最后一个截取前面的,删一个,再截取,再删加两个中间变量即可 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 先读取到“193.163.1.90,XX药房,sa,”然后在Split就可以读出。 string text = "数据库参数=193.163.1.90,XX药房,sa,"; text = text.Substring(text.IndexOf("=")+1); string[] info = text.Split(','); string text1 = info[0]; string text2 = info[1]; string text3 = info[2]; 把ini当做txt来读取我就不写怎样读取txt了,以下的receivedstring表示已读取ini的一行字符。string resultstr="";LinkedList<string> string_pool = new LinkedList<string>();for(int i=0;i<receivestring.length;i++){string tempstr=receivestring.Substring(i,1);if(tempstr!=","){resultstr+=tempstr;}else{string_pool.Add(resultstr);//你可以在这里写上判断函数,提取你需要的字符串resultstr="";}}我用了linklist来接受3个字符串,需要的时候这样调用:for (LinkedListNode<string> stringnode= string_pool.First; stringnode != null; stringnode = stringnode.Next)printf("%s",stringnode.Value);当然,你可以不用LinkedList的,在上述代码注释处提出你要的字符串 读取INI文件有专门的API函数。你通过API函数读取“数据库参数”的值,也就是读取“193.163.1.90,XX药房,sa,”, 读取到该值后就可以使用Split读出你所需要的参数了。具体的API函数是那些、如何应用你可以到网上查一下。这要比直接给你代码的印象要深的多。 string strTest = "193.163.1.90,XX药房,sa,"; string[] str = strTest.Split(','); string A, B, C; A = str[0].ToString(); B = str[1].ToString(); C = str[2].ToString(); 主要是要使用win32的一些api函数方法具体看链接[DllImport("kernel32")] private static extern bool WritePrivateProfileString(string section, string key, string val, string filePath); [DllImport("kernel32")] private static extern int GetPrivateProfileString(string section, string key, string def, byte[] retVal, int size, string 读取ini文件项public string ReadString(string Section, string Ident, string Default) { Byte[] Buffer = new Byte[65535]; int bufLen = GetPrivateProfileString(Section, Ident, Default, Buffer, Buffer.GetUpperBound(0), FileName); //必须设定0(系统默认的代码页)的编码方式,否则无法支持中文 string s = Encoding.GetEncoding(0).GetString(Buffer); s = s.Substring(0, bufLen); return s.Trim(); } public static void read() { FileStream fs = new FileStream("set.ini", FileMode.OpenOrCreate); StreamReader sr = new StreamReader(fs, Encoding.UTF8); while (sr.Peek() > 0) { string[] str = sr.ReadLine().Split('='); string text = str[1]; text = text.Substring(text.IndexOf("=")+1); string[] info = text.Split(','); string text1 = info[0]; string text2 = info[1]; string text3 = …… } sr.Close(); fs.Close(); }这样详细点~ public class INIClass { public string inipath; [DllImport("kernel32")] private static extern long WritePrivateProfileString(string section,string key,string val,string filePath); [DllImport("kernel32")] private static extern int GetPrivateProfileString(string section,string key,string def,StringBuilder retVal,int size,string filePath); /// <summary> /// 构造方法 /// </summary> /// <param name="INIPath">文件路径 </param> public INIClass(string INIPath) { inipath = INIPath; } /// <summary> /// 写入INI文件 /// </summary> /// <param name="Section">项目名称(如 [TypeName] ) </param> /// <param name="Key">键 </param> /// <param name="Value">值 </param> public void IniWriteValue(string Section,string Key,string Value) { WritePrivateProfileString(Section,Key,Value,this.inipath); } /// <summary> /// 读出INI文件 /// </summary> /// <param name="Section">项目名称 </param> /// <param name="Key">键 </param> public string IniReadValue(string Section,string Key) { StringBuilder temp = new StringBuilder(500); int i = GetPrivateProfileString(Section,Key,"",temp,500,this.inipath); return temp.ToString(); } /// <summary> /// 验证文件是否存在 /// </summary> public bool ExistINIFile() { return File.Exists(inipath); } } ini,xml,txt,bin等等这些格式的文件都可以用同一种方法来读取,IO流完全可以来操作,只是不一样的东西有它自己的格式,按规矩办事儿就好了。楼主说的文字格式楼上已经给出N种详细代码,实际上就是做字符串切割,先按“=”切分成两份,取后一分,再按“,”切割,切割出来的就是你需要的了。 Socket 中 AddressFamily.InterNetwork 问题 简单<%%>问题 Copy Pase的用法 C#子菜单句柄的获取问题,大家帮忙看看哈 gridbiew如何一列显示数据库两列内容(有些一列对应一列) 请教如何使用.net剪裁图片的问题! 200分的调查-100万以上的项目你们公司用.NET开发还是用JAVA?顺便谈谈原因!谢谢。顶有分! 求大神帮忙实现功能 关于DevExpress的 各路GDI+兼双缓冲高手帮忙看看,这段代码运行太慢!如何改进? 如何取得应用程序当前目录? c# winform 编写画图板 格式转换
然后在Split就可以读出。
text = text.Substring(text.IndexOf("=")+1);
string[] info = text.Split(',');
string text1 = info[0];
string text2 = info[1];
string text3 = info[2];
我就不写怎样读取txt了,以下的receivedstring表示已读取ini的一行字符。string resultstr="";
LinkedList<string> string_pool = new LinkedList<string>();
for(int i=0;i<receivestring.length;i++)
{string tempstr=receivestring.Substring(i,1);
if(tempstr!=",")
{
resultstr+=tempstr;
}
else
{
string_pool.Add(resultstr);//你可以在这里写上判断函数,提取你需要的字符串
resultstr="";
}
}我用了linklist来接受3个字符串,需要的时候这样调用:for (LinkedListNode<string> stringnode= string_pool.First; stringnode != null; stringnode = stringnode.Next)
printf("%s",stringnode.Value);当然,你可以不用LinkedList的,在上述代码注释处提出你要的字符串
具体的API函数是那些、如何应用你可以到网上查一下。这要比直接给你代码的印象要深的多。
string[] str = strTest.Split(',');
string A, B, C;
A = str[0].ToString();
B = str[1].ToString();
C = str[2].ToString();
具体看链接
[DllImport("kernel32")]
private static extern bool WritePrivateProfileString(string section, string key, string val, string filePath);
[DllImport("kernel32")]
private static extern int GetPrivateProfileString(string section, string key, string def, byte[] retVal, int size, string
读取ini文件项
public string ReadString(string Section, string Ident, string Default)
{
Byte[] Buffer = new Byte[65535];
int bufLen = GetPrivateProfileString(Section, Ident, Default, Buffer, Buffer.GetUpperBound(0), FileName);
//必须设定0(系统默认的代码页)的编码方式,否则无法支持中文
string s = Encoding.GetEncoding(0).GetString(Buffer);
s = s.Substring(0, bufLen);
return s.Trim();
}
{
FileStream fs = new FileStream("set.ini", FileMode.OpenOrCreate);
StreamReader sr = new StreamReader(fs, Encoding.UTF8); while (sr.Peek() > 0)
{ string[] str = sr.ReadLine().Split('=');
string text = str[1];
text = text.Substring(text.IndexOf("=")+1);
string[] info = text.Split(',');
string text1 = info[0];
string text2 = info[1];
string text3 = ……
} sr.Close();
fs.Close();
}
这样详细点~
{
public string inipath;
[DllImport("kernel32")]
private static extern long WritePrivateProfileString(string section,string key,string val,string filePath);
[DllImport("kernel32")]
private static extern int GetPrivateProfileString(string section,string key,string def,StringBuilder retVal,int size,string filePath);
/// <summary>
/// 构造方法
/// </summary>
/// <param name="INIPath">文件路径 </param>
public INIClass(string INIPath)
{
inipath = INIPath;
}
/// <summary>
/// 写入INI文件
/// </summary>
/// <param name="Section">项目名称(如 [TypeName] ) </param>
/// <param name="Key">键 </param>
/// <param name="Value">值 </param>
public void IniWriteValue(string Section,string Key,string Value)
{
WritePrivateProfileString(Section,Key,Value,this.inipath);
}
/// <summary>
/// 读出INI文件
/// </summary>
/// <param name="Section">项目名称 </param>
/// <param name="Key">键 </param>
public string IniReadValue(string Section,string Key)
{
StringBuilder temp = new StringBuilder(500);
int i = GetPrivateProfileString(Section,Key,"",temp,500,this.inipath);
return temp.ToString();
}
/// <summary>
/// 验证文件是否存在
/// </summary>
public bool ExistINIFile()
{
return File.Exists(inipath);
}
}