作者Uihc (我 有我的倔强...)
看板C_Sharp
标题[除错] 字串转换有问题
时间Thu Nov 16 17:08:10 2006
不好意思,又来麻烦大家..( ̄▽ ̄#)﹏﹏
我想写一个字串转换的功能
白话一点说,想把地址中"1段"转为"一段","2段"转为"二段"…以此类推
我的问题是,测试了十笔,只有第一笔成功> <
真相在这里:
http://photo.xuite.net/chiulin.wei/1190750/1.jpg
另外再问个问题,写网页时,我知道资料库连结字串可以存在web.config
然後再利用ConfigurationManager.AppSettings去连资料库
写windows form时也知道资料库连结字串是存在app.config
但是却没办法利用ConfigurationManager.AppSettings去读取字串,是为什麽呢??
我的程式如下:
private void Form1_Load(object sender, EventArgs e)
{
//连结资料库
string connStr="Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=|DataDirectory|\\test.mdb";
OleDbConnection myConn = new OleDbConnection(connStr);
string SQLquery = "SELECT * From table1";
OleDbCommand myCommand = new OleDbCommand(SQLquery,myConn);
myConn.Open();
OleDbDataReader myReader = myCommand.ExecuteReader();
for (int i = 0; i < 11; i++)
{
myReader.Read();
//地址资料存在第四个栏位
//rtbMsg是RichTextBox控制项
rtbMsg.Text += myReader[3] + " ";
rtbMsg.Text += "\n";
//把资料中的全型数字先转成半型
string strconv = Strings.StrConv(myReader[3].ToString(),
VbStrConv.Narrow, 0);
//section是我用来把段名从数字转国字的方法
string cstr = section(strconv);
rtbMsg.Text += cstr + "\n";
}
myReader.Close();
myConn.Close();
}
private string section(string org)
{
string strNew="";
string strOld="";
for (int i = 15; i > 0; i--)
{
strOld = i.ToString() + "段";
//用回圈去找传过来的地址字串里如果有包含"x段"
//就再利用switch去把数字段名转为国字段名
if (org.Contains(strOld))
{
switch (i)
{
case 1:
strNew = "一段";
break;
case 2:
strNew = "二段";
break;
case 3:
strNew = "三段";
break;
: (略)
case 15:
strNew = "十五段";
break;
default:
strNew = "零段";
break;
}
// end switch
}
//end if
}
//end for
string cstr = org.Replace(strOld, strNew);
return cstr;
}
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.64.235
1F:推 GreatShot:为什麽不用Regular Expression @@? 11/17 03:12
2F:推 michaelz:就是说...一行就搞定的东西 11/17 16:14
3F:推 Uihc:一行?. ? 我有稍微去读了一些RE的东西,可是阿拉伯数字转国字 11/21 09:16
4F:→ Uihc:除了用回圈,还有用其他方式吗?? 11/21 09:17