怎么把某些特定的字符提取出来?

ooip1919 2010-09-18 03:04:17
粘贴板中有这样的字符串(大括号内)
{
1 X102029 项目_02-300 0 X102042 项目_02-5108 0
2 X102046 项目_01-506 0 X102001 项目_01-508A 0
3 X102062 项目_02-040 0 X102093 项目_01-M036Z 0
4 X102125 特殊项目_04-B830S 0 X103001 高级文档_04-00 0
5 X104003 中级保密文档_04-00 0 X104005 高级文档_01-S036J 0
6 X100402 中级保密文档_03-8S 0 X109002 中级保密文档_46-148 0
7 X109003 中级保密文档_01-68 0 X109005 中级保密文档_04-00 0
8 X112001 中级保密文档_XQ 0 X110105 中级保密文档_XQ 0
9 X110404 中级保密文档_03-Q18HD 0 X120438 中级保密文档_01-M035Z 0
10 X211002 中级保密文档_02-620CR 0 X214004 中级保密文档_62-L023HC 0
11 X210113 中级保密文档_65-W138 0 X230301 中级保密文档_04-00 0
12 X999006 中级保密文档_513 0
}
怎么把“项目_02-300”“项目_02-5108”“项目_01-506”“项目_01-508A”.....提取出来,并存到字符串数组如tempA[n]中
...全文
180 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
samchoy 2010-09-19
  • 打赏
  • 举报
回复
俺很幸福地发现俺们这个远程桌面可以和本地通剪贴板了
samchoy 2010-09-19
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 ooip1919 的回复:]
要是能把含有中文的字段都提出来就更好了,
[/Quote]
void __fastcall TForm1::Button1Click(TObject *Sender)
{
TStringList *l1 = new TStringList;
TStringList *l2 = new TStringList;

if (Clipboard()->HasFormat(CF_TEXT))
l1->Text = Clipboard()->AsText;
for (int i = 0; i < l1->Count; i++)
{
l2->DelimitedText = l1->Strings[i];
for (int j = 0; j < l2->Count; j++)
{
// 判断是不是全角字符开头
if (l2->Strings[j].IsLeadByte(1) && l2->Strings[j].IsTrailByte(2))
Memo1->Lines->Add(l2->Strings[j]);
}
}

delete l1;
delete l2;
}
CppFile 2010-09-19
  • 打赏
  • 举报
回复
楼主啊,别太懒了,人家都已经告诉你方法了
ooip1919 2010-09-19
  • 打赏
  • 举报
回复
要是能把含有中文的字段都提出来就更好了,
xjq2003 2010-09-18
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 samchoy 的回复:]
C/C++ code
void __fastcall TForm1::Button1Click(TObject *Sender)
{
TStringList *l1 = new TStringList;
TStringList *l2 = new TStringList;

if (Clipboard()->HasFormat(CF_TEXT))
l1->Text……
[/Quote]正解
samchoy 2010-09-18
  • 打赏
  • 举报
回复
void __fastcall TForm1::Button1Click(TObject *Sender)
{
TStringList *l1 = new TStringList;
TStringList *l2 = new TStringList;

if (Clipboard()->HasFormat(CF_TEXT))
l1->Text = Clipboard()->AsText;
for (int i = 0; i < l1->Count; i++)
{
l2->DelimitedText = l1->Strings[i];
for (int j = 0; j < l2->Count; j++)
{
if (l2->Strings[j].Pos("项目") == 1)
Memo1->Lines->Add(l2->Strings[j]);
}
}

delete l1;
delete l2;
}

13,871

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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