![](/img/trans.png)
[英]What is the best way to convert List <string> to List<type> in C#
[英]What is the best way to convert a string separated by return chars into a List<string>?
我需要經常將“字符串塊” (包含返回字符的字符串,例如從文件或TextBox) 轉換為List<string>
。
比下面的ConvertBlockToLines方法更優雅的方法是什么?
using System;
using System.Collections.Generic;
using System.Linq;
namespace TestConvert9922
{
class Program
{
static void Main(string[] args)
{
string testBlock = "line one" + Environment.NewLine +
"line two" + Environment.NewLine +
"line three" + Environment.NewLine +
"line four" + Environment.NewLine +
"line five";
List<string> lines = StringHelpers.ConvertBlockToLines(testBlock);
lines.ForEach(l => Console.WriteLine(l));
Console.ReadLine();
}
}
public static class StringHelpers
{
public static List<string> ConvertBlockToLines(this string block)
{
string fixedBlock = block.Replace(Environment.NewLine, "§");
List<string> lines = fixedBlock.Split('§').ToList<string>();
lines.ForEach(s => s = s.Trim());
return lines;
}
}
}
List<string> newStr = str.Split(new[] { Environment.NewLine }, StringSplitOptions.None).ToList();
這會將連續的換行符保留為空字符串(請參閱StringSplitOptions )
無需轉換為您的特殊標志:
List<string> strings = str.Split(new string[] {Environment.NewLine}, StringSplitOptions.None).ToList();
strings.ForEach(s => s = s.Trim());
您是否嘗試拆分換行/回車並使用IEnumerable ToList擴展?
testBlock.Split( new char[] { '\n', '\r' }, StringSplitOptions.RemoveEmptyEntries )
.ToList()
如果你想保留空行,但可能同時有換行和回車。
textBlock.Replace( "\r\n", "\n" ).Replace( "\r", "\n" ).Split( '\n' ).ToList();
嗯。 你知道string
現在有一個.Split(),它接受一個string[]
數組,對嗎?
所以......
string[] lines = data.Split(
new string[1]{ Environment.NewLine },
StringSplitOptions.None
);
您可以使用RegEx.Split直接使用Enviroment.NewLine進行拆分。
public static List<string> ConvertBlockToLines(this string block)
{
return Regex.Split(block, Environment.NewLine).ToList();
}
LINQ!
var linesEnum = testBlock.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries).AsEnumerable();
List<string> lines = linesEnum.ToList();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.