我有一个带有名为 txbUserName 的多行文本框的 ASP.NET 页面。然后我将 3 个名称粘贴到文本框中,它们垂直对齐:
- 杰森
- 艾米
- 凯伦
每当我检测到回车或换行时,我希望能够以某种方式获取名称并将它们拆分为单独的字符串。我在想一个数组可能是要走的路。有任何想法吗?
谢谢你。
我有一个带有名为 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”。
将 any 替换\r\n
为\n
,然后使用 拆分\n
:
string[] arr = txbUserName.Text.Replace("\r\n", "\n").Split("\n".ToCharArray());
看一下 String.Split 函数(不确定确切的语法,我面前没有 IDE)。
string[] names = txbUserName.Text.Split(Environment.Newline);
mystring.Split(new Char[] { '\n' })
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();
}
}
试试这个:
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";
这取决于你想做什么。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
您可以使用 a 处理它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);
}