100分:新手求一个程序(提取字符串的一部分到一个新字段).当天就要解决啊~~~~

net探路者 2005-02-22 11:18:57
表:ZJ_FANGAN
提取字段:ZJ_A (text) 中的一部分 插入到 ZJ_B (datetime)
ZJ_A 内容和下面类似:
住宅与房地产处(7)封刚(2004-8-20 8:52:40)
意见:同意。
住宅与房地产处(5)桑卫京(2004-8-23 17:01:55)
意见:同意。
厅领导(9)张凤珠(2004-9-8 9:16:06)
意见:同意
要求:只取最后一个括号的时间到ZJ_B就可以
最好有完整的程序啊~~~~~~~~~
我没有时间了~~~~~~~~~xiexie !!!!!
...全文
199 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
jinbingg 2005-02-22
  • 打赏
  • 举报
回复
up
AllenTing 2005-02-22
  • 打赏
  • 举报
回复
住宅与房地产处(7)封刚(2004-8-20 8:52:40)
意见:同意。
住宅与房地产处(5)桑卫京(2004-8-23 17:01:55)
意见:同意。
厅领导(9)张凤珠(2004-9-8 9:16:06)
意见:同意
如果格式均为这样的话, LoveCherry(最讨厌你们这些要代码的了,一点技术含量都灭有)的方法可行。
不过有点问题,修改:
string [] arr=s.Split(new char[]{'(',')'});//用"("和")"符号把字符串打散成string数组
//arr[0]="住宅与房地产处" ,array[1]="7",array[2]="封刚" array[3]="2004-8-20 8:52:40" 以下类似
for(int i=1;i<=arr.Length;i++)
{
if(i%3==0)//这儿判断是否是时间字符串
{
Console.WriteLine(arr[i-1]);

}
}
dazhu2 2005-02-22
  • 打赏
  • 举报
回复
完整代码:稍作修改即可

using System.Data;
using System.Data.OleDb;
using System.Text.RegularExpressions;



OleDbConnection mycnn=new OleDbConnection(@"Provider=MicroSoft.Jet.OLEDB.4.0;Data Source=g:\dazhu.mdb");
mycnn.Open();
string reg_s=@" \d{1,2}:\d{1,2}:\d{1,2}";

if(mycnn.State==System.Data.ConnectionState.Open)
{
MessageBox.Show(" 数据库连接成功!!!","ts");
OleDbDataAdapter myada=new OleDbDataAdapter("select * from ZJ_FANGAN",mycnn);
DataSet myds= new DataSet();
myada.Fill(myds,"Table");
DataTable myt=myds.Tables[0];
foreach( DataRow r in myt.Rows)
{string s=r[1].ToString().Trim();
MatchCollection m=Regex.Matches(s,reg_s);
r[2]=m[0].ToString();

}


//更新
//myada.InsertCommand=new OleDbCommand("insert into 个人信息(ID,姓名,电话,籍贯) valuse(," +newrow[1].ToString()+","+newrow[2].ToString()+","+newrow[3].ToString()+")",mycnn);
OleDbCommandBuilder mycmd=new OleDbCommandBuilder(myada);
myada.Update(myds,"Table");
MessageBox.Show(" 数据添加成功!!!");
net探路者 2005-02-22
  • 打赏
  • 举报
回复
还是不明白啊~唉~ 大家能不能讲的详细点~~~~ 谢谢
LoveCherry 2005-02-22
  • 打赏
  • 举报
回复
string s="住宅与房地产处(7)封刚(2004-8-20 8:52:40)意见:同意。住宅与房地产处(5)桑卫京(2004-8-23 17:01:55) 意见:同意。 厅领导(9)张凤珠(2004-9-8 9:16:06) 意见:同意";
string [] arr=s.Split(new char[]{'(',')'});
int j=0;
for(int i=0;i<arr.Length;i++)
{
if(j==3)
{
Console.WriteLine(arr[i]);
j=0;
}
else
j++;
}
mobydick 2005-02-22
  • 打赏
  • 举报
回复
如果你是要取厅领导的审批时间,可以这样写:
string yourStr;
string regexStr = @"厅领导.+(\d{4}-\d{1,2}-\d{1,2} \d{1,2}:\d{1,2}:\d{1,2})";
string timeStr = Regex.Match(yourStr, regexStr).Groups[1].Value;
LoveCherry 2005-02-22
  • 打赏
  • 举报
回复
Split()以后返回的数组arrs[3],arrs[7],+4类推就是
yizhixiaozhu 2005-02-22
  • 打赏
  • 举报
回复
up
doubon 2005-02-22
  • 打赏
  • 举报
回复
顶!
JasonHeung 2005-02-22
  • 打赏
  • 举报
回复
update zj_fangan set zj_b = Convert(Datetime,zj_a.substring(zj_a.indexof("(2"),....)
jialiang 2005-02-22
  • 打赏
  • 举报
回复
基本内容如下,未调试
string GetString(string ZJ_A)
{
string tmp,lastDate;
int begin,end;

tmp=ZJ_A;
end=tmp.LastIndexOf(")",1,tmp.Length);
if (end>1)
begin=tmp.LastIndexOf("(",1,tmp.Length);
else
return "";
if ((begin>0) && (end>begin))
lastDate=tmp.Substring(begin,end-begin);
else
return "";
if (CheckDate(lastDate)==true)
return lastDate;
else
{
tmp=tmp.Substring(1,begin-1);
return GetString(tmp);
}
}
bool CheckDate(string strDate)
{
try
{
DateTime.Parse(strDate);
return true;
}
catch
{
return false;
}
}
jiezhi 2005-02-22
  • 打赏
  • 举报
回复
SubString()和IndexOf()结合使用就可以办到了。
net探路者 2005-02-22
  • 打赏
  • 举报
回复
关键是数据的格式不统一~~ 大哥们~~
net探路者 2005-02-22
  • 打赏
  • 举报
回复
可是又有新的问题~~~~狂晕啊~~~~
现在的需求是要最后的处长的批阅时间和厅领导的批阅时间
用正则只能得到第一个处长 和 第一个 厅领导审批的时间
怎么才能得到最后一个 处长 和厅长的审批时间~~~~~~~~~~~~~~~~~~~`
我说的都累~~~~~~~~~~~``
谢谢,谢谢 不够在加分~~~~~~~~~~~~~~~~~~~`
net探路者 2005-02-22
  • 打赏
  • 举报
回复
总算把领导给虎住了~ 谢谢大家啊, 就是用正则表达式~~~太着急了~~~

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧