Построение строки F#

Я хочу сделать этот код C# на F#

  string[] a = new string[5];
    string b = string.Empty;
    a[0] = "Line 1";
    a[2] = "Line 2";

    foreach (string c in a)
    {
        b = c + Environment.NewLine;
    }

Вы уверены, что хотите сделать это, а не b + = c + E.nl?

Will Dean 02.12.2008 01:26

Да ладно, почему это не проголосовали?

Sunny Milenov 02.12.2008 01:45

+1: Нет причин, по которым законный вопрос должен был быть отклонен.

Juliet 02.12.2008 01:48

Согласовано. Хотя я подозреваю, что Уилл Дин прав и в исходном вопросе есть опечатка. Это может быть причиной голосов против.

EBGreen 02.12.2008 01:50

За него дважды проголосовали против, так что это не только Уилл (если он вообще проголосовал против). И опечатка вряд ли станет причиной для голосования "против".

Sunny Milenov 02.12.2008 01:51

Извините, я не имел в виду, что Уилл проголосовал против или что опечатки были оправданием для голосов против.

EBGreen 02.12.2008 02:00

@Sunny: не требуется инициализировать все элементы перед их использованием, и исключение NullReferenceException не возникает при объединении нулевых строк вместе.

Juliet 02.12.2008 02:02
В чем разница между методом "==" и equals()
В чем разница между методом "==" и equals()
Это один из наиболее часто задаваемых вопросов новичкам на собеседовании. Давайте обсудим его на примере.
Замена символа по определенному индексу в JavaScript
Замена символа по определенному индексу в JavaScript
В JavaScript существует несколько способов заменить символ в строке по определенному индексу.
4
7
2 445
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Намного лучше использовать встроенный метод String.Join, чем использовать собственную функцию на основе повторяющегося объединения строк. Вот код на F#:

open System
let a = [| "Line 1"; null; "Line 2"; null; null;|] 
let b = String.Join(Environment.NewLine, a)

Оператор '^' объединяет две строки. Кроме того, "+" перегружен, поэтому он может работать со строками. Но использование StringBuilder или Join - лучшая стратегия для этого.

Вы можете использовать функцию F# concat из модуля System, например:

let a = [| "Line 1"; null; "Line 2"; null; null;|] 
let b = String.concat System.Environment.NewLine a

(вам не следует импортировать пространство имен System, чтобы избежать конфликта имен между String module F# и String class .NET)

Другие вопросы по теме