Что быстрый путь состоит в том, чтобы вызвать CRLF в C#/.NET?

Когда вы получаете подобные ошибки, это происходит потому, что вы импортируете набор информации, которая, если она будет отображаться, переопределит данные, которые у вас уже есть на вашем листе. Как правило, для решения этой проблемы рекомендуется создать новый лист и выполнить импорт на новом пустом листе, но если вы пытаетесь объединить 2 столбца в 4 (по 2 на каждый дублирующий данные), убедитесь, что вы предоставляете правильное пространство например, я полагаю, вы захотите поместить первый импорт в ячейку A1, а второй в C1. И если вы помещаете только одну IMPORTRANGE формулу в лист с уже имеющимися данными, просто убедитесь, что она не перекрывается.

Это означает, что ваша проблема в основном перекрывается информацией при импорте с использованием формулы IMPORTRANGE

Основные вещи, которые можно попытаться решить, или найти путь для ее решения, могут быть:

select cell A3 and push delete button.

Или

create a new sheet and try the formula again with an empty sheet.
43
задан Neil C. Obremski 8 May 2009 в 19:37
поделиться

3 ответа

input.Replace("\r\n", "\n").Replace("\r", "\n").Replace("\n", "\r\n")

This will work if the input contains only one type of line breaks - either CR, or LF, or CR+LF.

62
ответ дан 26 November 2019 в 22:42
поделиться

It depends on exactly what the requirements are. In particular, how do you want to handle "\r" on its own? Should that count as a line break or not? As an example, how should "a\n\rb" be treated? Is that one very odd line break, one "\n" break and then a rogue "\r", or two separate linebreaks? If "\r" and "\n" can both be linebreaks on their own, why should "\r\n" not be treated as two linebreaks?

Here's some code which I suspect is reasonably efficient.

using System;
using System.Text;

class LineBreaks
{    
    static void Main()
    {
        Test("a\nb");
        Test("a\nb\r\nc");
        Test("a\r\nb\r\nc");
        Test("a\rb\nc");
        Test("a\r");
        Test("a\n");
        Test("a\r\n");
    }

    static void Test(string input)
    {
        string normalized = NormalizeLineBreaks(input);
        string debug = normalized.Replace("\r", "\\r")
                                 .Replace("\n", "\\n");
        Console.WriteLine(debug);
    }

    static string NormalizeLineBreaks(string input)
    {
        // Allow 10% as a rough guess of how much the string may grow.
        // If we're wrong we'll either waste space or have extra copies -
        // it will still work
        StringBuilder builder = new StringBuilder((int) (input.Length * 1.1));

        bool lastWasCR = false;

        foreach (char c in input)
        {
            if (lastWasCR)
            {
                lastWasCR = false;
                if (c == '\n')
                {
                    continue; // Already written \r\n
                }
            }
            switch (c)
            {
                case '\r':
                    builder.Append("\r\n");
                    lastWasCR = true;
                    break;
                case '\n':
                    builder.Append("\r\n");
                    break;
                default:
                    builder.Append(c);
                    break;
            }
        }
        return builder.ToString();
    }
}
29
ответ дан 26 November 2019 в 22:42
поделиться
string nonNormalized = "\r\n\n\r";

string normalized = nonNormalized.Replace("\r", "\n").Replace("\n", "\r\n");
4
ответ дан 26 November 2019 в 22:42
поделиться
Другие вопросы по тегам:

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