Что лучший способ состоит в том, чтобы преобразовать строку, разделенную символами возврата в Список <строка>?

Я должен часто преобразовывать "строковый блок" (строка, содержащая символы возврата, например, из файла или 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;
        }

    }
}
10
задан Edward Tanguay 24 February 2010 в 13:19
поделиться

6 ответов

Вот простой jQuery способ:

var el = $('#yourid .yourclass');

el.html(el.html().replace(/Old Text/ig, "New Text"));
-121--671105-

Хотя это более сложное решение, чем вы ищете, вы можете использовать Vowpal Wabbit и тренировать его с предложениями из разных языков.

Теоретически вы можете получить язык для каждого предложения в ваших документах.

http://hunch.net/~vw/

(Не обманывайтесь «онлайн» в подзаголовке проекта - это просто mathspeak для обучения без необходимости иметь весь учебный материал в памяти)

-121--1489230-
List<string> newStr = str.Split(new[] { Environment.NewLine }, StringSplitOptions.None).ToList();

При этом последовательные новые строки останутся пустыми последовательностями (см. StringSplitOptions )

20
ответ дан 3 December 2019 в 14:52
поделиться

Пробовали ли вы разделение на новую строку / возврат каретки и использовать расширение IEnumerable ToList?

testBlock.Split( new char[] { '\n', '\r' }, StringSplitOptions.RemoveEmptyEntries )
         .ToList()

Если вы хотите сохранить пустые строки, но могут иметь как перевод строки, так и возврат каретки.

textBlock.Replace( "\r\n", "\n" ).Replace( "\r", "\n" ).Split( '\n' ).ToList();
3
ответ дан 3 December 2019 в 14:52
поделиться

Не нужно преобразовывать в специальный знак:

List<string> strings = str.Split(new string[] {Environment.NewLine}, StringSplitOptions.None).ToList();
strings.ForEach(s => s = s.Trim());
4
ответ дан 3 December 2019 в 14:52
поделиться

Хм. Вы знаете, что string теперь имеет .Split (), который принимает массив string [] , верно?

Итак ...

string[] lines = data.Split(
    new string[1]{ Environment.NewLine },
    StringSplitOptions.None
);
2
ответ дан 3 December 2019 в 14:52
поделиться

Вы можете использовать RegEx.Split для разделения напрямую с помощью Enviroment.NewLine.

public static List<string> ConvertBlockToLines(this string block)
{
   return Regex.Split(block, Environment.NewLine).ToList();
}
2
ответ дан 3 December 2019 в 14:52
поделиться

LINQ!

var linesEnum = testBlock.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries).AsEnumerable();

List<string> lines = linesEnum.ToList();
0
ответ дан 3 December 2019 в 14:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: