text 字符限定问题,在线等!!!

feeling_vb 2003-09-03 11:01:14
例如在一个textBox中 :

我输入 “wo是谁啊”
可是数据库中相应的字段长度为 6
我现在可以用
System.Text.Encoding.Unicode.GetByteCount ( “wo是谁啊” );

得到字符串的长度
,可是我不知道怎么取到不超出范围的字符!!!

我的程序是winForm 应用程序,字符不限定,可以输入汉字、数字、字符等!!!

请写明你是怎么处理的,在那个事件中处理,用什么方法,谢谢!
...全文
25 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
angelior 2003-09-04
  • 打赏
  • 举报
回复
樓主是什么數據庫?

有這個必要嗎

你先在TEXTBOX的MAXLENTH中輸入你的最大字串長度(中英文字符在此相同)

當大于你的限定長度時,就輸入不了,這樣不就可以了嗎?

feeling_vb 2003-09-03
  • 打赏
  • 举报
回复
关键问题是限制输入长度不能区别 汉字

比如我限定 textBox 的最大长度 为 6,
“我是不知道了” 这样的字符串也可以输入,但是在数据库中只能存放 “我是不” 三个字符。

顺便回复 angxain(張憲)

Substring 这个方法是限定不了的
lin_lin 2003-09-03
  • 打赏
  • 举报
回复
限制输入长度比截取字符串是不是更合适一些?
angxain 2003-09-03
  • 打赏
  • 举报
回复
MessageBox.Show(txtCpbh.Text.Substring(0,6));
chinanewway 2003-09-03
  • 打赏
  • 举报
回复
我用web窗体的话是如此的:
protected System.Web.UI.WebControls.TextBox txt;
string input="";
......
input=txt.Text.Substring(0,6);
feeling_vb 2003-09-03
  • 打赏
  • 举报
回复
比如说
“wo是谁啊” 应当取 “wo是谁”
“abcdefgh” 应当取 “abcdef”
"我是谁啊" 应当取 "我是谁"
"我是shui'a" 应当取 "我是sh"

这样就可以和数据库字段的长度匹配!!!

feeling_vb 2003-09-03
  • 打赏
  • 举报
回复
比如说
“wo是谁啊” 应当取 “wo是谁”
“abcdefgh” 应当取 “abcdef”
"我是谁啊" 我是谁 "我是谁"
"我是shui'a" 我是谁 "我是sh"

这样就可以和数据库字段的长度匹配!!!

derek 2003-09-03
  • 打赏
  • 举报
回复
取到不超出范围的字符? 何意?
RnfShadow 2003-09-03
  • 打赏
  • 举报
回复
新的写好了:(判断是否为6个byte,其中全部Ascii码都是1byte,汉字的全部都是2byte)

int lenth=System.Text.Encoding.GetEncoding("GB2312").GetByteCount(this.textBox2.Text.ToString());
Byte [] input= System.Text.Encoding.GetEncoding("GB2312").GetBytes (this.textBox2.Text.ToString());
if (lenth>=6)
{
this.label2.Text=System.Text.Encoding.GetEncoding("GB2312").GetString(input,0,6);
}
else
{
this.label2.Text=System.Text.Encoding.GetEncoding("GB2312").GetString(input,0,lenth);
}
RnfShadow 2003-09-03
  • 打赏
  • 举报
回复
哎哟,写错了!!应该是if(lenth>=12),对不起!!呵呵:)

int lenth=System.Text.Encoding.BigEndianUnicode.GetByteCount(this.textBox1.Text.ToString());
Byte [] input= System.Text.Encoding.BigEndianUnicode.GetBytes (this.textBox1.Text.ToString());
if (lenth>=12)
{
this.label1.Text=System.Text.Encoding.BigEndianUnicode.GetString(input,0,12);
}
else
{
this.label1.Text=System.Text.Encoding.BigEndianUnicode.GetString(input,0,lenth);
}
RnfShadow 2003-09-03
  • 打赏
  • 举报
回复
搂主,你还没有搞好啊?? :(
我帮你做了一个判断,你copy进你的程序里面就行了:
(其中textBox1就是输入的内容,截取后在label1输出)
int lenth=System.Text.Encoding.BigEndianUnicode.GetByteCount(this.textBox1.Text.ToString());
Byte [] input= System.Text.Encoding.BigEndianUnicode.GetBytes (this.textBox1.Text.ToString());
if (lenth>=6)
{
this.label1.Text=System.Text.Encoding.BigEndianUnicode.GetString(input,0,12);
}
else
{
this.label1.Text=System.Text.Encoding.BigEndianUnicode.GetString(input,0,lenth);
}
BeyondLove2000 2003-09-03
  • 打赏
  • 举报
回复
小心取乱码(半个汉字)进去!
RnfShadow 2003-09-03
  • 打赏
  • 举报
回复
至于小于6个怎么办,你做一个判断语句就搞定了。我现在很困,要去睡一会儿,判断的语句你就自己写吧!! :)
RnfShadow 2003-09-03
  • 打赏
  • 举报
回复
对不起,我理解错了你的意思,用下面的BigEndianUnicode就可以啦,因为它会把所有字符都默认成为汉字那样占两个byte,你要截取前6个字符,用(input,0,12)就行了(包括英文和汉字的)!!
Byte [] input= System.Text.Encoding.BigEndianUnicode.GetBytes (this.textBox1.Text.ToString());
this.label1.Text=System.Text.Encoding.BigEndianUnicode.GetString(input,0,12);
ambitiou 2003-09-03
  • 打赏
  • 举报
回复
这样试试。
char[] MaxLengthString=new char[6];
MaxLengthString=TextBox1.Text;
RnfShadow 2003-09-03
  • 打赏
  • 举报
回复
我随便做了一个textbox,一个button,一个label
你在textbox输入一些字符,然后按按钮,就会自动截取前6个字符放进label里面
以下是button的语句:
Byte [] input= System.Text.Encoding.GetEncoding("GB2312").GetBytes (this.textBox1.Text.ToString());
this.label1.Text=System.Text.Encoding.GetEncoding("GB2312").GetString(input,0,6);
derek 2003-09-03
  • 打赏
  • 举报
回复

char[] c=new char[10]; //char[3]
c=this.textBox1.Text.ToCharArray();
string s=new string(c,0,3) ; //string s=new string(c);
MessageBox.Show(s);

110,536

社区成员

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

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

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