读文本的问题,把问题和选项分开,如何读??

poloyzhang 2011-06-07 10:31:08
首先看一下下面的文本:


2.汽车制造企业属于( )型企业。
A.劳动密集 B.知识密集 C.技术机密 D.人员密集

3.服装加工企业属于( )型企业。
A.资金密集 B.技术密集 C.知识密集 D.劳动密集

5.以下属于企业流程内容的是()流程。
A.生产管理
B.信息
C.物资管理
D.工艺

6.人力资源是企业资源中唯一具有()的资源
A.价值型 B.能动性 C.流动性 D.效率性

以上的文本是供导入用的.


我想把这些插入数据库, 数据库中的列为 问题, 选项A, 选项B, 选项C, 选项D,
然后我需要如何把上面的文本自动划分成 问题, 选项A, 选项B, 选项C, 选项D,

想了一下思路.可是不知道如何实现.
首先,读到数字加 .例1. 开始向后读, 搜寻到字母A.即完成. 得到问题的字符串.
然后再从A.后面开始再向后读,搜寻到字母B.即完成 选项A的字符串.
然后再从B.后面开始再向后读,搜寻到字母C.即完成 选项B的字符串.
然后再从c.后面开始再向后读,搜寻到字母d.即完成 选项c的字符串.
然后再从D.后面开始再向后读,搜寻到数字.即完成 选项D的字符串.
上面即完成为数据库中的一行. 插入到数据库.接着读下一行.
同样方式读第二行.
读数字2.向后........选项A结束得到问题的字符串.

请问这个用什么算法实现,还是有更好的实现方法? 搜寻字符...
...全文
175 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
poloyzhang 2011-06-11
  • 打赏
  • 举报
回复
正则真神奇啊.要好好学习下.结贴
sxldfang 2011-06-10
  • 打赏
  • 举报
回复

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
string txt = @"1.社会主义初级阶段的主要矛盾是( ) P8 页
A. 人民群众同三座大山之间的矛盾 B. 无产阶级同资产阶级之间的矛盾
C. 社会主义同资本主义之间的矛盾 D. 人民群众日益增长的物质文化需要同落后的de社会生产
之间的矛盾


『正确答案』D

2.为了解决社会主义社会的主要

矛盾,党和国家的工作重点必须转移到以经济建设为中心的社会主义( ) P10页
A.经济体制改革上来 B.经济效益的提高上来 C.现代化建设上来 D.对外开放上来


『正确答案』C

3.社会主义经济制度的基础是( ) P21页
A.多种所有制经济 B.混合所有制经济
C.社会主义公有制经济
D.私有制经济

『正确答案』C

4.社会主义国有经济的主导作用( ) P22页
A.主要体现为量的优势 B.主要体现为质的提高 C.主要体现为有竞争力 D.主要体现为控制力上

『正确答案』D";
MatchCollection mc = Regex.Matches(txt, @"(?s)(\s*\d+.*?(?=A\.))|[ABCD]\..*?(?=[ABCD]\.|『正确答案』)|『正确答案』[ABCD]");
foreach (Match m in mc)
{
Console.WriteLine(m.Value.Trim().Replace("\n",""));
}
Console.ReadKey();
}
}
}



1.社会主义初级阶段的主要矛盾是( ) P8 页
A. 人民群众同三座大山之间的矛盾
B. 无产阶级同资产阶级之间的矛盾
C. 社会主义同资本主义之间的矛盾
D. 人民群众日益增长的物质文化需要同落后的de社会生产 之间的矛盾
『正确答案』D
2.为了解决社会主义社会的主要矛盾,党和国家的工作重点必须转移到以经济建设为中心的
社会主义( ) P10页
A.经济体制改革上来
B.经济效益的提高上来
C.现代化建设上来
D.对外开放上来
『正确答案』C
3.社会主义经济制度的基础是( ) P21页
A.多种所有制经济
B.混合所有制经济
C.社会主义公有制经济
D.私有制经济
『正确答案』C
4.社会主义国有经济的主导作用( ) P22页
A.主要体现为量的优势
B.主要体现为质的提高
C.主要体现为有竞争力
D.主要体现为控制力上
『正确答案』D
poloyzhang 2011-06-09
  • 打赏
  • 举报
回复
看了一些正则表达式的内容,可是还是没有学会, 那位能否帮忙解释下上面的正则表达式的写法.

另外 m.Groups 这个Groups 是如何分组的? 上面没发现分了两个组啊?

poloyzhang 2011-06-09
  • 打赏
  • 举报
回复
以否帮忙写下上面的正规表达式.精通正则表达式我改天慢慢学习下.
我姓区不姓区 2011-06-08
  • 打赏
  • 举报
回复

string content = @"2.汽车制造企业属于( )型企业。
A.劳动密集 B.知识密集 C.技术机密 D.人员密集

3.服装加工企业属于( )型企业。
A.资金密集 B.技术密集 C.知识密集 D.劳动密集

5.以下属于企业流程内容的是()流程。
A.生产管理
B.信息
C.物资管理
D.工艺

6.人力资源是企业资源中唯一具有()的资源
A.价值型 B.能动性 C.流动性 D.效率性

";
foreach (Match m in Regex.Matches(content, @"(?s)(\d+\.[^\r\n]+?)\r\n(A\..+?)\r\n\r\n"))
{
Console.WriteLine("问题:" + m.Groups[1].Value);
foreach (Match m2 in Regex.Matches(m.Groups[2].Value, @"[A-D]\.([^\s]+)"))
Console.WriteLine("选项:" + m2.Value);
Console.WriteLine("-------------------");
}

z580587792 2011-06-08
  • 打赏
  • 举报
回复
(1)readlines 读取每行。
文件格式相同的话很简单。
只是简单的格式处理,
你可以逐一添加数据。
(2)
也可以重写文件。
重写成
2.汽车制造企业属于( )型企业。,A.劳动密集 ,B.知识密集 ,C.技术机密, D.人员密集
3.服装加工企业属于( )型企业。,A.资金密集 ,B.技术密集 ,C.知识密集, D.劳动密集
5.以下属于企业流程内容的是()流程。,A.生产管理,B.信息 ,C.物资管理,D.工艺
6.人力资源是企业资源中唯一具有()的资源,A.价值型 ,B.能动性, C.流动性 ,D.效率性
将格式替换为可导入数据的txt。就更方便了。
然后删除就好了!
建议用第二种!
poloyzhang 2011-06-08
  • 打赏
  • 举报
回复
连起来用就不行了.就出问题.
\d\..*
[ABCD]\.\w+(?=\b)

如何连接起来?
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 poloyzhang 的回复:]
能否按行分出问题, A,B,C,D 再,问题,A,B,C,D
[/Quote]

#1楼写的就是这个。只不过可能稍微有点bug。可以使用 [ABCD]\.\w+(?=\b)

这种问题不涉及软件的设计问题。
poloyzhang 2011-06-08
  • 打赏
  • 举报
回复
如果字符是有以下换行规律的呢?
2.汽车制造企业属于( )型企业。
A.劳动密集
B.知识密集
C.技术机密
D.人员密集

3.服装加工企业属于( )型企业。
A.资金密集
B.技术密集
C.知识密集
D.劳动密集

5.以下属于企业流程内容的是()流程。
A.生产管理
B.信息
C.物资管理
D.工艺

6.人力资源是企业资源中唯一具有()的资源
A.价值型
B.能动性
C.流动性
D.效率性

能否按行分出问题, A,B,C,D 再,问题,A,B,C,D

我姓区不姓区 2011-06-07
  • 打赏
  • 举报
回复

string content = @"2.汽车制造企业属于( )型企业。
A.劳动密集 B.知识密集 C.技术机密 D.人员密集

3.服装加工企业属于( )型企业。
A.资金密集 B.技术密集 C.知识密集 D.劳动密集

5.以下属于企业流程内容的是()流程。
A.生产管理
B.信息
C.物资管理
D.工艺

6.人力资源是企业资源中唯一具有()的资源
A.价值型 B.能动性 C.流动性 D.效率性

";
foreach (Match m in Regex.Matches(content, @"(?s)(\d+\.[^\r\n]+?)\r\n(A\..+?)\r\n\r\n"))
{
Console.WriteLine("问题:" + m.Groups[1].Value);
Console.WriteLine("选项:" + m.Groups[2].Value);
Console.WriteLine("-------------------");
}

种草德鲁伊 2011-06-07
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 karascanvas 的回复:]

从数字加.到空格(包括换行)算题目
从空格加字母加.到下一个空格算选项。
逐字符来读也就行了。
[/Quote]

没看清楚, 从数字加.到空格(包括换行)算题目 应该是到换行才对。
sxldfang 2011-06-07
  • 打赏
  • 举报
回复
因为有些题目中可能ABCD选项后的内容中含有ABCD字符!
种草德鲁伊 2011-06-07
  • 打赏
  • 举报
回复
从数字加.到空格(包括换行)算题目
从空格加字母加.到下一个空格算选项。
逐字符来读也就行了。
sxldfang 2011-06-07
  • 打赏
  • 举报
回复
建议先利用正则工具将数据处理成一行行的,人工处理一些错误,形成源文件,然后将数据放入到数据库。
kingdom_0 2011-06-07
  • 打赏
  • 举报
回复
你可以一行一行的来读,读出来之后进行判断是问题还是选项,再做处理.
threenewbee 2011-06-07
  • 打赏
  • 举报
回复
正则匹配
[ABCD].\w\.*
kingdom_0 2011-06-07
  • 打赏
  • 举报
回复
        string content = @"2.汽车制造企业属于( )型企业。
A.劳动密集 B.知识密集 C.技术机密 D.人员密集

3.服装加工企业属于( )型企业。
A.资金密集 B.技术密集 C.知识密集 D.劳动密集

5.以下属于企业流程内容的是()流程。
A.生产管理
B.信息
C.物资管理
D.工艺

6.人力资源是企业资源中唯一具有()的资源
A.价值型 B.能动性 C.流动性 D.效率性

";
string pattern=@"(?is)(\d+[^\r\n]+?)[\r\n]*(A\..+?)\r\n+\r\n";
foreach (Match m in Regex.Matches(content, pattern))
{
Console.WriteLine("问题:" + m.Groups[1].Value);
Console.WriteLine("选项:" + m.Groups[2].Value);
}
Console.ReadKey();
}
poloyzhang 2011-06-07
  • 打赏
  • 举报
回复
@"(?s)(\d+\.[^\r\n]+?)\r\n(A\..+?)\r\n\r\n" 这个是代表什么意思.那位可以解释下么?
\r\n 好像是换行. 查msdn只有\b 之类的.
poloyzhang 2011-06-07
  • 打赏
  • 举报
回复
要把选项也分离出来.

110,552

社区成员

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

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

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