我有一个名为txbUserName的多行文本框的ASP.NET页面。然后我将3个名称垂直对齐地粘贴到文本框中:
- Jason
- Ammy
- Karen
我想要在检测到回车或换行时,将这些名称拆分为单独的字符串,并以某种方式使用数组。 有什么想法吗?
谢谢。
我有一个名为txbUserName的多行文本框的ASP.NET页面。然后我将3个名称垂直对齐地粘贴到文本框中:
我想要在检测到回车或换行时,将这些名称拆分为单独的字符串,并以某种方式使用数组。 有什么想法吗?
谢谢。
string[] result = input.Split(new string[] {"\n", "\r\n"}, StringSplitOptions.RemoveEmptyEntries);
这段代码可以同时处理 \n 和 \r\n 类型的换行符,并且删除用户可能输入的空行。
我使用以下代码进行了测试:
string test = "PersonA\nPersonB\r\nPersonC\n";
string[] result = test.Split(new string[] {"\n", "\r\n"}, StringSplitOptions.RemoveEmptyEntries);
foreach (string s in result)
Console.WriteLine(s);
它可以正确地工作,将其拆分为一个包含"PersonA"、"PersonB"和"PersonC"三个字符串的数组。
将任何 \r\n
替换为 \n
,然后使用 \n
进行拆分:
string[] arr = txbUserName.Text.Replace("\r\n", "\n").Split("\n".ToCharArray());
new char[] { '\n' }
? - Matthew ScharleySplit('\n')
,因为分隔符数组是一个params
参数。 - LukeH请查看String.Split函数(不确定具体语法,我面前没有IDE)。
string[] names = txbUserName.Text.Split(Environment.Newline);
using System.Text;
using System.Text.RegularExpressions;
protected void btnAction_Click(object sender, EventArgs e)
{
string value = txtDetails.Text;
char[] delimiter = new char[] { ';','[' };
string[] parts = value.Split(delimiter, StringSplitOptions.RemoveEmptyEntries);
for (int i = 0; i < parts.Length; i++)
{
txtFName.Text = parts[0].ToString();
txtLName.Text = parts[1].ToString();
txtAge.Text = parts[2].ToString();
txtDob.Text = parts[3].ToString();
}
}
这取决于你想做什么。另一个选择是使用 StringReader
类并使用枚举器,这对于小列表可能过于冗长,但对于更大的字符串可能更节省内存:
IEnumerable<string> GetNextString(string input)
{
using (var sr = new StringReader(input))
{
string s;
while ((s = sr.ReadLine()) != null)
{
yield return s;
}
}
}
这支持\n
和\r\n
两种行尾。由于它返回一个IEnumerable
,您可以使用foreach
进行处理,或使用任何标准的linq扩展(ToList()
,ToArray()
,Where
等)。
例如,使用foreach
:
var ss = "Hello\nworld\r\ntwo bags\r\nsugar";
foreach (var s in GetNextString(ss))
{
Console.WriteLine("==> {0}", s);
}
试试这个:
message.Split(Environment.NewLine.ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
如果成立:
var message = "test 1\r\ntest 2";
或者
var message = "test 1\ntest 2";
或者
var message = "test 1\rtest 2";
string[] result = input.Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);
。 - LukeHstring[] result = input.Split(new char[] { '\r', '\n' }, StringSplitOptions.None);
。 - Kraang Prime