Я должен часто преобразовывать "строковый блок" (строка, содержащая символы возврата, например, из файла или 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;
}
}
}
Вот простой jQuery способ:
var el = $('#yourid .yourclass');
el.html(el.html().replace(/Old Text/ig, "New Text"));
-121--671105- Хотя это более сложное решение, чем вы ищете, вы можете использовать Vowpal Wabbit и тренировать его с предложениями из разных языков.
Теоретически вы можете получить язык для каждого предложения в ваших документах.
(Не обманывайтесь «онлайн» в подзаголовке проекта - это просто mathspeak для обучения без необходимости иметь весь учебный материал в памяти)
-121--1489230-List<string> newStr = str.Split(new[] { Environment.NewLine }, StringSplitOptions.None).ToList();
При этом последовательные новые строки останутся пустыми последовательностями (см. StringSplitOptions )
Пробовали ли вы разделение на новую строку / возврат каретки и использовать расширение IEnumerable ToList?
testBlock.Split( new char[] { '\n', '\r' }, StringSplitOptions.RemoveEmptyEntries )
.ToList()
Если вы хотите сохранить пустые строки, но могут иметь как перевод строки, так и возврат каретки.
textBlock.Replace( "\r\n", "\n" ).Replace( "\r", "\n" ).Split( '\n' ).ToList();
Не нужно преобразовывать в специальный знак:
List<string> strings = str.Split(new string[] {Environment.NewLine}, StringSplitOptions.None).ToList();
strings.ForEach(s => s = s.Trim());
Хм. Вы знаете, что 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();