解析字符串

照片123

成员
已加入
2020年2月11日
留言内容
18
编程经验
Beginner
我正在尝试将输入的电子邮件地址解析到文本框中。我想这样分割输入的输入(@符号之前和之后)。 @ | GMAIL.COM。到目前为止,这是我的代码:
txtEmail.Text = txtEmail.Trim(); //使用它来修剪字符串以确保没有空格
txtEmail = txtEmail.Split(@); //告诉它在哪里拆分输入的字符串
这段代码可能没有任何意义,但是我对此有麻烦,因此我尝试将网上发现的示例中发现的有用内容组合在一起。
我还阅读了此链接: 如何使用String.Split解析字符串(C#指南)
我仍然对确切要写什么感到困惑,是否有人有一个更简单的示例来说明解析和如何执行? (我是C#的初学者,因此即使您有最基本的示例,它也确实会帮到我)
谢谢!
 
Last edited:

金西尼

C#论坛主持人
工作人员
已加入
2011年4月23日
留言内容
3,535
地点
悉尼,澳大利亚
编程经验
10+
一是什么类型 txtEmail?名称和使用它的事实 文本 属性表明它是一个 文本框?想一想您实际上如何使用 文本框。它有没有 修剪 方法?什么类型实际上有一个 修剪 方法?你如何从一个类型的对象 文本框?这就是您需要思考的方式。循序渐进,问问自己您实际要实现的目标,然后将其分解为较小的步骤。等等。
 

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,540
地点
弗吉尼亚州切萨皮克
编程经验
10+
如果您知道要解析的是一个电子邮件地址,那么最好使用 邮件地址 全班为您做艰苦的工作。将要解析的电子邮件地址传递到构造函数中,然后阅读 用户 主持人 属性以获取所需的零件。

在你走之前:"That's an awfully lot of machinery just to figure out what is before and after the '@' symbol. Split() is easier.",请花点时间阅读全文 RFC5322第3.4节 (或过时,但更容易阅读 RFC3696第3节)。一个简短的摘要是,人们可以在电子邮件地址的用户部分添加“ @”符号,并为您提供类似于以下内容的输入:
C#:

此外,电子邮件地址可能具有显示名称和实际地址:
C#:
John Doe <[email protected]>
 

照片123

成员
已加入
2020年2月11日
留言内容
18
编程经验
Beginner
First, what type is txtEmail?名称和使用它的事实 文本 属性表明它是一个 文本框?想一想您实际上如何使用 文本框。它有没有 修剪 方法?什么类型实际上有一个 修剪 方法?你如何从一个类型的对象 文本框?这就是您需要思考的方式。循序渐进,问问自己您实际要实现的目标,然后将其分解为较小的步骤。等等。
txtEmail是我的文本框的名称。我知道默认情况下文本框的类型为字符串。 trim方法需要放置空格,因为我书中的示例包含“ Sam Smith。 “然后当他们使用trim并评论了使用后的字符串外观时,该空格不存在,因此变成了“ Sam Smith”。要从文本框中获取文本,请编写(文本框名称)。文本;
 

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,540
地点
弗吉尼亚州切萨皮克
编程经验
10+
我知道默认情况下文本框的类型为字符串。
您需要重新考虑。文本框的类型 文本框。文本框是许多Windows窗体控件之一。此特定控件用于显示字符串,并允许用户编辑字符串。
 

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,540
地点
弗吉尼亚州切萨皮克
编程经验
10+
No Textboxes are Windows Form controls. A variable of the type 文本框 will only accept references to instances of 文本框 和 derived classes of 文本框. Ex:
C#:
文本框 txtLastName = new TextBox();
TextBox txtEmail = new TextBox();
DataGridTextBox dgtbCellEntry = new DataGridTextBox();

txtEmail = txtLastName;
txtEmail = dgtbCellEntry;

这将失败:
C#:
string email = "[email protected]";
TextBox txtEmail = new TextBox();
txtEmail = email;
 

照片123

成员
已加入
2020年2月11日
留言内容
18
编程经验
Beginner
No Textboxes are Windows Form controls. A variable of the type 文本框 will only accept references to instances of 文本框 和 derived classes of 文本框. Ex:
C#:
文本框 txtLastName = new TextBox();
TextBox txtEmail = new TextBox();
DataGridTextBox dgtbCellEntry = new DataGridTextBox();

txtEmail = txtLastName;
txtEmail = dgtbCellEntry;

这将失败:
C#:
string email = "[email protected]";
TextBox txtEmail = new TextBox();
txtEmail = email;
在阅读了有关拆分和修剪的信息后,我仍然遇到了麻烦,但我仍然不了解。这是我到目前为止所拥有的:
字符串email = txtEmail.Text;
如果(txtEmail.Contains("@"){
txtEmail.Text = txtEmail.Split("@");
有人可以帮我吗?
 

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,540
地点
弗吉尼亚州切萨皮克
编程经验
10+
txtEmail is a Textbox window control. email is a string. The methods Contains()Split() only exist on strings, not Textbox controls. The way you get a copy of the string that is being displayed by the Textbox control is to access the 文本 property.
 

羊皮

退休程序员
工作人员
已加入
2018年9月5日
留言内容
1,933
地点
英国
编程经验
10+
给狗扔骨头跳伞  ;)

C#:
            string email_str = "[email protected]"; /* This is a string, and it has the same characteristics of a .text property of a textbox control */
            string[] str_arr = email_str.Split('@'); /* This is a string array, it too is a variable capable of storing multiple strings. .Split('') returns a string array of strings. */
            textBox1.Text = str_arr[0]; /* This equals the first occurrence of the first variable in the string array. */
            textBox2.Text = email_str.Substring(email_str.IndexOf("@"), 1); /* .Substring() creates a second string variable from the integral point of where 
"@" exists in the string, and we do that by allowing IndexOf() to be the reference provider to provide the integral point of where "@" is in this string, 
and 1 takes only this value and returns the substring to the Textbox .Text property as "@". */
            textBox3.Text = str_arr[1]; /* This equals the second occurrence, just as explained for the first occurrence. */

要了解这些方法。阅读扰流板下方我签名中的链接。
 

照片123

成员
已加入
2020年2月11日
留言内容
18
编程经验
Beginner
给狗扔骨头跳伞  ;)

C#:
            string email_str = "[email protected]"; /* This is a string, and it has the same characteristics of a .text property of a textbox control */
            string[] str_arr = email_str.Split('@'); /* This is a string array, it too is a variable capable of storing multiple strings. .Split('') returns a string array of strings. */
            textBox1.Text = str_arr[0]; /* This equals the first occurrence of the first variable in the string array. */
            textBox2.Text = email_str.Substring(email_str.IndexOf("@"), 1); /* .Substring() creates a second string variable from the integral point of where
"@" exists in the string, and we do that by allowing IndexOf() to be the reference provider to provide the integral point of where "@" is in this string,
and 1 takes only this value and returns the substring to the Textbox .Text property as "@". */
            textBox3.Text = str_arr[1]; /* This equals the second occurrence, just as explained for the first occurrence. */

要了解这些方法。阅读扰流板下方我签名中的链接。
感谢Sheepings和Skydiver的帮助!
 
最佳 底部