显示从 text.file 到数组 c# 的 lins
本文关键字:lins 数组 text file 显示 | 更新日期: 2023-09-27 18:35:26
我正在尝试将txt文件中的行读取到数组中并将其显示在文本框中。这是我的代码:
protected void Page_Load(object sender, EventArgs e)
{
if (IsPostBack != true)
{
blogPostTextBox.Text ="";
string blogFilePath = Server.MapPath("~") + "/Blogs.txt";
string[] blogMessageArray = File.ReadAllLines(blogFilePath);
// this for loop code does not work..I think..
for (int i = 0; i < blogMessageArray.Length; i++)
{
string[] fileLineArray = blogMessageArray[i].Split(' ');
blogPostTextBox.Text = blogMessageArray[i] + System.Environment.New Line.ToString();
}
}
}
我的文本文件包含几行,我正在尝试将每行拆分为数组,并使用 for 循环或 while 循环将所有行显示到文本框中。
更新:
对于 ASP.Net
var items =File.ReadAllLines(blogFilePath).SelectMany(line => line.Split()).Where(x=>!string.IsNullOrEmpty(x));
blogPostTextBox.Text=string.Join(Environment.NewLine, items)
作为旁注,当您从多个字符串构建路径时,最好使用 Path.Combine
string blogFilePath = Path.Combine( Server.MapPath("~") , "Blogs.txt");
if (IsPostBack != true)
也是有效的,但你可以这样做
if (!IsPostBack)
温福
如果文本框控件的 Multiline 属性设置为 true,则可以使用 TextBoxBase.Lines Property
blogPostTextBox.Lines =File.ReadAllLines(blogFilePath);
如果您需要拆分每一行并设置为文本框文本,那么
blogPostTextBox.Lines = File.ReadAllLines(blogFilePath).SelectMany(line => line.Split()).ToArray();
您必须在TextBox
中设置TextMode="MultiLine"
(默认值为 SingleLine
),然后您可以使用 Linq 以这种方式构建文本:
var allLinesText = blogMessageArray
.SelectMany(line => line.Split().Select(word => word.Trim()))
.Where(word => !string.IsNullOrEmpty(word));
blogPostTextBox.Text = string.Join(Environment.NewLine, allLinesText);
您需要将
每一行附加到文本框中。您在上面所做的是用每个新行覆盖文本框的内容。
string[] blogMessageArray = File.ReadAllLines("");
blogPostTextBox.Text = "";
foreach (string message in blogMessageArray)
{
blogPostTextBox.Text += message + Environment.NewLine;
}
虽然与其读出所有行,然后写出所有行,为什么不把所有文本都写到文本框里呢?
blogPostTextBox.Text = File.ReadAllText();
虽然你可以在循环中执行此操作,但你真的不需要(或不想这样做)
用内置的点网方法替换您的循环,这些方法实际上可以满足您的需求。
See String.Join()
public static string Join(
string separator,
params string[] value
)
这会将 blogMessageArray 的所有元素与您指定的分隔符相结合。("'"在您的情况下,HTML 不需要"''r'")
然后只需将其分配给属性 blogPostTextBox.Tex