好的,我目前有这段代码
public int i = 0; //this is outside of the private void button1_click
string str = txtEmail.Text;
int pos = str.LastIndexOf("@");
string str2 = str.Substring(pos);
string str3 = str.Substring(0, str.LastIndexOf("@"));
txtEmail.Text = str3 + i++ + str2;
它将电子邮件拆分为2个字符串,然后将它们与它们之间的整数组合,但我希望它能够更改整数。但是这个代码只是让它让我们说文本变成awesome1@email.com当我按下按钮将1增加到2时它只是这样做。 awesome12@email.com等。我怎么得到它只是添加1到1而不是1旁边的1?
答案 0 :(得分:1)
我测试了以下内容,看起来它解决了你的问题。改变你的这一行:
string str = txtEmail.Text;
对此:
string str = txtEmail.Text.Replace(string.Format("{0}@", i - 1), "@");
设置它以便您的电子邮件地址采用以下形式:
awesome1@email.com
awesome2@email.com
awesome3@email.com
etc.
答案 1 :(得分:0)
不确定此代码中i
的来源,但希望这可行
string str = txtEmail.Text;
int pos = str.LastIndexOf("@");
string str2 = str.Substring(pos);
string str3 = str.Substring(0, str.LastIndexOf("@"));
txtEmail.Text = str3 + (i++).ToSting() + str2;
答案 2 :(得分:0)
这应该有效:
String email = "awesome1@email.com";
String[] tokens = email.Split(new char[] { '@' }, StringSplitOptions.RemoveEmptyEntries);
const String allowed = "0123456789";
String part1 = "";
String numberStr = "";
foreach (char c in tokens[0].Reverse())
{
if (allowed.Contains(c) && part1.Length==0)
{
numberStr += c;
}
else
{
part1 += c;
}
}
part1 = new String(part1.Reverse().ToArray());
int number = int.Parse(new String(numberStr.Reverse().ToArray()));
String result = String.Format("{0}{1}@{2}", part1, number++, tokens[1]);
虽然看起来有点麻烦。如果有的话,接受正则表达式的答案。
答案 3 :(得分:0)
这将有效
public static string IncNumberBeforeAt(string text)
{
int lastAt = text.LastIndexOf('@');
if (lastAt != -1)
{
int pos = lastAt - 1;
string num = "";
while (text[pos] >= '0' && text[pos] <= '9')
{
num = text[pos] + num;
pos--;
if (pos < 0)
break;
}
int numInc = int.Parse(num) + 1;
return text.Replace(num.ToString() + "@", numInc.ToString() + "@");
}
else
{
return text;
}
}
测试
IncNumberBeforeAt("awesome1@email.com"); // => returns awesome2@email.com
IncNumberBeforeAt("awesome234@email.com"); // => returns awesome235@email.com
IncNumberBeforeAt("email.com"); // => returns email.com
IncNumberBeforeAt("5@email.com"); // => returns 6@email.com
答案 4 :(得分:0)
您必须跟踪原始电子邮件地址:
例如
string originalEmail = "test@gmail.com";
var parts = originalEmail.Split('@');
txtEmail.Text = string.Format("{0}{1}@{2}", parts[0], i++, parts[1]);