Перейти к содержанию

Объединение полей: различия между версиями

Материал из Химсофт Вики
 
(не показано 5 промежуточных версий этого же участника)
Строка 14: Строка 14:


*строка, состоящая из объединенных элементов,
*строка, состоящая из объединенных элементов,
*пустая строка, если подходящих элементов нет.
*пустая строка, если нет ни одного элемента, или все элементы пустые.


==Алгоритм==
==Алгоритм==
*Проверяет массив входящих значений на наличие элементов; при их отсутствии возвращает пустую строку.
*Создает список элементов.
*Добавляет в список элементов только не пустые элементы массива.
*Возвращает элементы списка, вставляя между ними заданный разделитель.
==Использование в выражениях==
==Использование в выражениях==
<syntaxhighlight lang="java">
// CA_1
[JoinFields(Environment.NewLine , [Main.short_name], [Main.inn])]
</syntaxhighlight>
==Использование во вкладке кода==
==Использование во вкладке кода==
==Подключение==
==Код функции==
==Код функции==



Текущая версия от 03:42, 21 октября 2026

Функция JoinFields - объединяет нескольких текстовых значений в одну строку с использованием заданного разделителя.

Примечание

В отличие от string.Join() не добавляет в итог пустые строки, строки из пробелов и т.д.

Входные параметры

  • separator - строка-разделитель, вставляемая между элементами;
  • fields - массив объектов, строковые представления которых необходимо объединить.

Выходные параметры

  • строка, состоящая из объединенных элементов,
  • пустая строка, если нет ни одного элемента, или все элементы пустые.

Алгоритм

  • Проверяет массив входящих значений на наличие элементов; при их отсутствии возвращает пустую строку.
  • Создает список элементов.
  • Добавляет в список элементов только не пустые элементы массива.
  • Возвращает элементы списка, вставляя между ними заданный разделитель.

Использование в выражениях

// CA_1
[JoinFields(Environment.NewLine , [Main.short_name], [Main.inn])]

Использование во вкладке кода

Код функции

/// <summary>
///     Объединение нескольких текстовых значений в одну строку с использованием заданного разделителя.<br/>
///     В отличие от string.Join() не добавляет в итог пустые строки, строки из пробелов и т.д.
/// </summary>
/// <param name="separator">Строка-разделитель, вставляемая между элементами.</param>
/// <param name="fields">Массив объектов, строковые представления которых необходимо объединить.</param>
/// <returns>
///     - или строка, состоящая из объединенных элементов,
///     - или <see cref="string.Empty"/>, если подходящих элементов нет.
/// </returns>
public static string JoinFields(string separator, params object?[]? fields)
{
	if (fields == null || fields.Length == 0) return string.Empty;
	
	var list = new System.Collections.Generic.List<string>();
	
	foreach (var f in fields)
	{
		if (f == null || f == DBNull.Value) continue;
		
		var elem = f.ToString();
		if (string.IsNullOrWhiteSpace(elem)) continue;
		
		list.Add(elem.Trim());
	}
	
	return string.Join(separator, list); 
}