CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  VB.NET

字符串流的操作---项目遇到的问题。在线等。

楼主zhaojie513(赵杰)2006-03-02 14:35:15 在 .NET技术 / VB.NET 提问

下午好,辛苦了。  
   
  我现在遇到个问题:  
  我有个字符串,但字符串中寸的格式是ini文件的格式,  
  例:  
        Dim   strData   As   New   StringBuilder  
   
        strData.Append("[Name]"   &   vbCrLf)  
        strData.Append("Test"   &   vbCrLf)  
        strData.Append(vbCrLf)  
        strData.Append("[Content]"   &   vbCrLf)  
        strData.Append("I   am   the   original   text"   &   vbCrLf)  
        strData.Append(vbCrLf)  
        strData.Append("[Parameter]"   &   vbCrLf)  
        strData.Append("A=10   cm"   &   vbCrLf)  
        strData.Append("C=20   cm"   &   vbCrLf)  
        strData.Append("E=50   cm")  
   
  之后我要取得有多少个部分,还有每个部分下有多少个Key,该如何处理比较好。  
  我现在用的是“[“split,但这样的话,如果这个字符串中出现了“[“就出错了。  
  请问该如何是好,再现等。。。急。。 问题点数:50、回复次数:10Top

1 楼The123(Shall We Dance? :))回复于 2006-03-02 14:44:40 得分 0

我有个字符串,但字符串中寸的格式是ini文件的格式  
   
  -------------  
  你要是想读取ini文件设置的话就调用windows   api就可以了Top

2 楼sunny110(沙漠)回复于 2006-03-02 14:54:44 得分 0

关注Top

3 楼zhanqiangz(闲云野鹤-Overriding)回复于 2006-03-02 15:30:19 得分 0

Dim   reg   As   New   RegEx("\b[.*?]\b")  
  Dim   mc   As   MatchCollection=reg.Match(your   string   read   from   ini   file)  
  然后遍历取m.ValueTop

4 楼zhaojie513(赵杰)回复于 2006-03-02 15:42:03 得分 0

Dim   reg   As   New   RegEx("\b[.*?]\b")  
  Dim   mc   As   MatchCollection=reg.Match(your   string   read   from   ini   file)  
  然后遍历取m.Value  
   
  RegEx在什么类里啊。谢谢了  
   
  Top

5 楼zhanqiangz(闲云野鹤-Overriding)回复于 2006-03-02 15:45:09 得分 0

imports   System.Text.RegularExpressionsTop

6 楼zhaojie513(赵杰)回复于 2006-03-02 15:46:24 得分 0

Dim   reg   As   New   Regex("\b[.*?]\b")  
   
                  Dim   strData   As   New   StringBuilder  
   
                  strData.Append("[Name]"   &   vbCrLf)  
                  strData.Append("Test"   &   vbCrLf)  
                  strData.Append(vbCrLf)  
                  strData.Append("[Content]"   &   vbCrLf)  
                  strData.Append("I   am   the   original   text"   &   vbCrLf)  
                  strData.Append(vbCrLf)  
                  strData.Append("[Parameter]"   &   vbCrLf)  
                  strData.Append("A=10   cm"   &   vbCrLf)  
                  strData.Append("C=20   cm"   &   vbCrLf)  
                  strData.Append("E=50   cm")  
   
                  Dim   mc   As   MatchCollection   =   reg.Match(strData.ToString)报错呀,说不能转换成MatchCollection   类型。。。请教。Top

7 楼zhaojie513(赵杰)回复于 2006-03-02 15:57:20 得分 0

Private   Sub   Button1_Click(ByVal   sender   As   System.Object,   ByVal   e   As   System.EventArgs)   Handles   Button1.Click  
                  Dim   reg   As   New   Regex("\b[.*?]\b")  
   
                  Dim   strData   As   New   StringBuilder  
   
                  strData.Append("[Name]"   &   vbCrLf)  
                  strData.Append("Test"   &   vbCrLf)  
                  strData.Append(vbCrLf)  
                  strData.Append("[Content]"   &   vbCrLf)  
                  strData.Append("I   am   the   original   text"   &   vbCrLf)  
                  strData.Append(vbCrLf)  
                  strData.Append("[Parameter]"   &   vbCrLf)  
                  strData.Append("A=10   cm"   &   vbCrLf)  
                  strData.Append("C=20   cm"   &   vbCrLf)  
                  strData.Append("E=50   cm")  
   
                  Dim   ary   As   New   ArrayList  
   
                  Dim   MailList   As   System.Text.RegularExpressions.MatchCollection   =   reg.Matches(strData.ToString)  
   
                  MsgBox(MailList   .Count)  
   
          End   Sub  
   
  MailList   里没有分解出来呀。请再指教一下。辛苦了。  
  Top

8 楼zhanqiangz(闲云野鹤-Overriding)回复于 2006-03-02 16:26:46 得分 0

那有可能是我的正则表达式写的不正确,我没有经过测试的。  
  Dim   reg   As   New   Regex("^[.*?]$")  
   
  用这个试试  
  或者用  
  [.*?]  
  Top

9 楼zhanqiangz(闲云野鹤-Overriding)回复于 2006-03-02 16:41:05 得分 0

不好意思,我犯了个弱智的错误,因为[]在正则表达式里算是保留关键字,所以应该先转义  
                        string   str   =   "[key]\r\nsssss[name]\r\n";  
                          Regex   reg   =   new   Regex(@"\[.*?\]",RegexOptions.Singleline);  
                        MatchCollection   m   =   reg.Matches(str);  
                        foreach   (Match   mm   in   m)  
                        {  
                                MessageBox.Show(mm.Value   +   "   "   +   mm.Index.ToString());  
                        }  
                  }Top

10 楼zhaojie513(赵杰)回复于 2006-03-02 17:07:46 得分 0

Public   Function   getsectionsname(ByVal   striniData   As   String)   As   MatchCollection  
   
                  Dim   reg   As   Regex  
                  Dim   sectionList   As   System.Text.RegularExpressions.MatchCollection  
   
                  Try  
   
                          reg   =   New   Regex("\[(?<sectionname>\w*)\]")  
                          sectionList   =   reg.Matches(striniData)  
                          Return   sectionList  
                  Catch   ex   As   Exception  
                          Return   Nothing  
                  End   Try  
          End   Function  
   
          Public   Function   getsectionstring(ByVal   striniData   As   String,   ByVal   sectionname   As   String)   As   String  
   
                  sectionname   =   sectionname.Replace("[",   "")  
                  sectionname   =   sectionname.Replace("]",   "")  
                  Dim   regexpattern   As   String   =   "(\["   +   sectionname   +   "\]"   +   "(?<SectionString>\w*))"  
                  'Dim   regexpattern   As   String   =   "(\[Parameter\](?<sectionstring>.*)\[]"  
   
                  Dim   reg   As   Regex  
                  reg   =   New   Regex(regexpattern,   RegexOptions.Singleline)  
   
                  If   reg.IsMatch(striniData)   Then  
                          Return   reg.Match(striniData).Result("${SectionString}")  
                  End   If  
   
                  Return   String.Empty  
   
          End   Function  
   
   
  getsectionsname   现在可以了。  
  但取getsectionstring的时候为空是不是表达式不对呀。  
  辛苦了。Top

相关问题

  • 字符串操作
  • !字符串操作
  • 字符串操作。
  • 字符串操作?
  • 字符串操作
  • 字符串操作
  • 字符串操作
  • 字符串操作?
  • 字符串操作
  • (CString)字符串 + (BYTE)字符串 + (CString)字符串的操作

关键词

  • 文件
  • strdata
  • vbcrlf
  • 字符串
  • strinidata
  • sectionname
  • append
  • regexpattern
  • reg
  • 格式

得分解答快速导航

  • 帖主:zhaojie513

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo