[英]How to split strings on carriage return with C#?
我有一個ASP.NET頁面,其中包含一個名為txbUserName的多行文本框。 然后我將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());
看一下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
您可以使用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);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.