c# リスト中に存在しない名前+連番の文字列を作成する
概要
文字列リストに新しい要素を追加する際「末尾に連番をつけて追加したい」という単純だけど、ありがちな要件の実装例です。
メインロジックの中にこうした処理を直接書いていくと、コードが膨らんでしまうために外出ししてみました。
番号が歯抜けになっていない事を前提としたコードです。
実装
Unique.cs
using System.Collections.Generic;
using System.Linq;
namespace Implem.Libraries.Utilities
{
public static class Unique
{
// リスト中に存在しない名前+連番の文字列を作成する関数
public static string New(IEnumerable<string> existing, string name, int start = 1)
{
var number = start;
while(existing.Any(o => o == name + number))
{
number++;
}
return name + number;
}
}
}
Program.cs
using Implem.Libraries.Utilities;
using System;
using System.Collections.Generic;
namespace Implem.CodeDefiner
{
internal class Program
{
// 関数の使用例
static void Main(string[] args)
{
// 連番で 1, 2 が存在するリスト
var items = new List<string> { "設定1", "設定2" };
// リストに連番 3, 4, 5 を追加したい場合の使用例
items.Add(Unique.New(items, "設定"));
items.Add(Unique.New(items, "設定"));
items.Add(Unique.New(items, "設定"));
// 内容を出力
foreach(var item in items)
{
Console.WriteLine(item);
}
}
}
}
結果
設定1
設定2
設定3
設定4
設定5
Unique.cs
using System.Collections.Generic;
using System.Linq;
namespace Implem.Libraries.Utilities
{
public static class Unique
{
// リスト中に存在しない名前+連番の文字列を作成する関数
public static string New(IEnumerable<string> existing, string name, int start = 1)
{
var number = start;
while(existing.Any(o => o == name + number))
{
number++;
}
return name + number;
}
}
}
Program.cs
using Implem.Libraries.Utilities;
using System;
using System.Collections.Generic;
namespace Implem.CodeDefiner
{
internal class Program
{
// 関数の使用例
static void Main(string[] args)
{
// 連番で 1, 2 が存在するリスト
var items = new List<string> { "設定1", "設定2" };
// リストに連番 3, 4, 5 を追加したい場合の使用例
items.Add(Unique.New(items, "設定"));
items.Add(Unique.New(items, "設定"));
items.Add(Unique.New(items, "設定"));
// 内容を出力
foreach(var item in items)
{
Console.WriteLine(item);
}
}
}
}
結果
設定1
設定2
設定3
設定4
設定5
Author And Source
この問題について(c# リスト中に存在しない名前+連番の文字列を作成する), 我々は、より多くの情報をここで見つけました https://qiita.com/Implem/items/2e2f826e7f939f7547cf著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .