对字符串的读取和计算

sanji09 2008-08-28 12:46:17
刚刚接触vb.net一个多星期,不会的太多了,请高手帮忙
界面上是2个button及一个lable,一个是读取,一个是评价
打开文件,然后把文件(txt形式)输出到lable中
现在遇到的问题是如何读取字符串,想要实现的功能如下
如果文件中有5个数字(数字的范围就是1到3全角或半角状态)
12311 就输出ABCDE
123321 输出ABCDEF
依此类推
并作如下判断
如果截取到的字符串是内容是1
「│」=1(半角数字) or 1(全角数字)

「├」=2(半角数字) or 2(全角数字)

「┤」=3(半角数字) or 3(全角数字)

最终结果
如果文件内容是
123321
112233
输出
ABCDEF
│├┤┤├│

││├├┤┤

事关小弟以后工作问题,大侠们帮忙
小弟先拜谢了
...全文
119 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
浮生若梦丶 2008-08-28
  • 打赏
  • 举报
回复
我勒吗A,vb的都吱么难搞么?
wdgphc 2008-08-28
  • 打赏
  • 举报
回复
请问你文件中的位数超过26怎么办呢?字符怎么些? 别的都好办.
brallow 2008-08-28
  • 打赏
  • 举报
回复
没写注释,你可能不太明白。再帖一份。



public static void Output(string fileName) //这里传入文件的名称,带路径
{
if(File.Exist(fileName)) //检查指定位置是否存在相应文件
{
using(StreamReader sr =File.OpenText(fileName)) //打开文件,
{
bool firstLine=false;
do
{
string currentLine = sr.ReadLine(); //读取出一行。
if(currentLine==null)break; //如果到达文件尾则返回NULL,退出循环
if(firstLine)
Console.WriteLine(ConvertHeadString(currentLine.Length); //根据第一行的数据输出头部的ABCD...
Console.WriteLine(ConvertString(currentLine)); //输出每行数字对应的符号
}while(true);
}
}
}

public static string ConvertHeadString(int len) //转换出标题行
{
string ret="";
for(int i=0;i<len;i++)
{
ret +=(new string((char)(i+ 65), 1); //生成一个字符的字符串。根据ASCII码
}
return ret;
}


public static string ConvertString(string sr) //转换出数据行
{

string ret="";
for(int i=0;i<sr.Length;i++)
{
//这里的转换规则不能处理全角的,如果是全角的,你再多加几个case就可以。
switch(sr[i])
{
case '1':
ret+="│";
break;
case '2':
ret +="├";
break;
case '3':
ret +="┤";
break;
}
}
return ret;
}

brallow 2008-08-28
  • 打赏
  • 举报
回复
OH。描述个规则都不完整。
你这个我只有一个地方没有确定:是否每一行的字母个数都相同??
比如第一行是5个,那么第二行,三行也是5个?如果是的话这一系列问题应该说是非常好解决的。
我不会用VB.NET写一下C#的用法,大体的意思。未经调试!


public static void Output(string fileName)
{
if(File.Exist(fileName))
{
using(StreamReader sr =File.OpenText(fileName))
{
bool firstLine=false;
do
{
string currentLine = sr.ReadLine();
if(currentLine==null)break;
if(firstLine)
Console.WriteLine(ConvertHeadString(currentLine.Length);
Console.WriteLine(ConvertString(currentLine));
}while(true);
}
}
}

public static string ConvertHeadString(int len)
{
string ret="";
for(int i=0;i<len;i++)
{
ret +=(new string((char)(i+ 65), 1);
}
return ret;
}


public static string ConvertString(string sr)
{
string ret="";
for(int i=0;i<sr.Length;i++)
{
switch(sr[i])
{
case '1':
ret+="│";
break;
case '2':
ret +="├";
break;
case '3':
ret +="┤";
break;
}
}
return ret;
}
sanji09 2008-08-28
  • 打赏
  • 举报
回复
不怕大家笑话,小弟我憋2天了,一点思路都没有
在把要求写一下
首先
那个TXT文件的内容是可以手动写进去的(只能输入1——3)
如果我输入123321 六位,这个位数是没有限制的,1位到无限大都可以 保存——读取
则输出
ABCDEF
││├├┤┤
也是6位
同时根据这个
「│」=1(半角数字) or 1(全角数字)

「├」=2(半角数字) or 2(全角数字)

「┤」=3(半角数字) or 3(全角数字)
规则作转换
在来一个例子
文件内容是 3
输出
A


或者
文件内容是 (位数是不固定的)
13223123
21312313
23123131
21231231
则输出
ABCDEFGH
│┤├├┤│├┤
├│┤├│┤│┤
├┤│├┤│┤│
├│├┤│├┤│
此程序关乎小弟今后工作,恳求大家帮忙
brallow 2008-08-28
  • 打赏
  • 举报
回复
感觉有几点没有说明,我先理一下我的思路。
1:如果对效率没有什么要求,那么我的方法的第一步是把全部的全角数字转换成半角的。
写一个这样的函数:
public static string ConvertXXXX(string src);
2:对文件的处理涉及以下几个问题:
你说的这些数字是否5个排成一行还是多个?
你说的这此数字是否以5个为单位进行处理?另外:到底是5个还是6个?12311是5个,123321可是6个。
3:如果是5个或6个一行,则相对比较好处理。
写个函数一行一行转换就OK了。
char c = ...;
char r ='';
switch(c)
{
case '1':
r = '│';
break;
case '2':
r = '├';
break;
case '3':
r = '┤';
break;
default:
throw new Exception("Some Error");
}
内容概要:本文档介绍了一个基于MATLAB/Simulink平台的综合性科研资源共享项目,核心内容为四旋翼无人机俯仰姿态保持的模糊自整定PID控制系统设计与仿真,提供完整的Matlab代码和Simulink仿真实现资源。项目进一步拓展至无人机轨迹跟踪、多控制策略对比(如线性MPC、非线性NMPC、强化学习RL及混合MPC-RL)、储能优化、电力系统调度、路径规划、神经网络预测等多个前沿科研方向。文档强调科研不仅需要严谨思维与勤奋,更要善于“借力”,通过成熟案例启发创新思路,帮助研究者避免误区,利用高质量资源激发科研灵感,加速高水平成果的复现与产出。; 适合人群:具备一定MATLAB编程基础,从事自动化、控制工程、电力系统、机器人或人工智能等相关领域的科研人员、研究生及工程师,尤其适合希望快速复现高水平论文成果的研究者。; 使用场景及目标:① 实现模糊PID控制在无人机姿态控制中的应用与仿真;② 对比分析不同先进控制策略(如MPC、RL)在轨迹跟踪中的性能表现;③ 借助提供的代码与模型,完成科研项目中的仿真验证、论文复现或算法优化任务。; 阅读建议:建议读者按照资源目录顺序逐步学习,优先掌握核心控制方法(如模糊PID、MPC)的实现逻辑,结合代码与仿真模型进行调试与改进,从而深化对控制理论的理解并推动自身科研工作的创新。
内容概要:本文档围绕“2023年IEEE ICMA顶刊复现多欠驱动水面无人艇误差约束协同路径跟踪控制(Matlab代码实现)”展开,详细介绍了一项针对多欠驱动水面无人艇的协同路径跟踪控制技术的研究与实现。该研究通过引入误差约束机制,旨在提升无人艇在复杂海洋环境下的路径跟踪精度与系统稳定性。文档不仅提供了完整的Matlab代码实现,还涵盖了控制算法的设计原理、数学建模过程以及仿真实验结果分析。此外,文档还列举了多个相关科研方向,如智能优化算法、机器学习、路径规划、无人机控制、电力系统优化等,展示了其在多学科交叉领域的广泛应用前景,并倡导科研工作者善用工具资源,提升研究效率。; 适合人群:具备一定编程基础,尤其是熟练掌握Matlab/Simulink环境的科研人员、工程师,以及对无人艇控制、路径跟踪、协同控制、非线性系统控制等领域感兴趣的研究生和高校学者。; 使用场景及目标:① 开展多欠驱动水面无人艇的协同路径跟踪控制研究;② 设计与实现具有误差约束的先进控制算法;③ 利用Matlab进行控制系统建模、仿真与性能验证;④ 探索将智能优化算法与现代控制理论相结合,解决复杂工程系统中的实际控制问题。; 阅读建议:建议读者按照文档的逻辑顺序系统学习,重点理解控制算法的设计思路与数学推导过程,并结合所提供的Matlab代码进行动手实践与仿真调试,以深化对理论知识的掌握。同时,鼓励读者积极查阅相关领域的最新文献,紧跟学术前沿,不断拓展研究视野,激发创新灵感。

16,718

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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