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

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

Материал из Химсофт Вики
 
(не показано 9 промежуточных версий этого же участника)
Строка 1: Строка 1:
Функция <code>JoinFields</code> - объединяет нескольких текстовых значений в одну строку с использованием заданного разделителя.
<div style="background-color: #e7f3ff; border-left: 5px solid #2196f3; padding: 15px; margin: 10px 0;">
'''Примечание'''
В отличие от <code>string.Join()</code> не добавляет в итог пустые строки, строки из пробелов и т.д.
</div>
==Входные параметры==
==Входные параметры==
*<code>separator</code> - строка-разделитель, вставляемая между элементами;
*<code>fields</code> - массив объектов, строковые представления которых необходимо объединить.
==Выходные параметры==
==Выходные параметры==
*строка, состоящая из объединенных элементов,
*пустая строка, если нет ни одного элемента, или все элементы пустые.
==Алгоритм==
==Алгоритм==
*Проверяет массив входящих значений на наличие элементов; при их отсутствии возвращает пустую строку.
*Создает список элементов.
*Добавляет в список элементов только не пустые элементы массива.
*Возвращает элементы списка, вставляя между ними заданный разделитель.
==Использование в выражениях==
==Использование в выражениях==
<syntaxhighlight lang="java">
// CA_1
[JoinFields(Environment.NewLine , [Main.short_name], [Main.inn])]
</syntaxhighlight>
==Использование во вкладке кода==
==Использование во вкладке кода==
==Подключение==
==Код функции==
==Код функции==


Строка 12: Строка 37:
///    В отличие от string.Join() не добавляет в итог пустые строки, строки из пробелов и т.д.
///    В отличие от string.Join() не добавляет в итог пустые строки, строки из пробелов и т.д.
/// </summary>
/// </summary>
/// <param name="separator">Строка-разделитель, вставляемая между элементами.</param>
/// <param name="fields">Массив объектов, строковые представления которых необходимо объединить.</param>
/// <returns>
///    - или строка, состоящая из объединенных элементов,
///    - или <see cref="string.Empty"/>, если подходящих элементов нет.
/// </returns>
public static string JoinFields(string separator, params object?[]? fields)
public static string JoinFields(string separator, params object?[]? fields)
{
{

Текущая версия от 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); 
}