質問への追記・修正の依頼欄の[2021/10/23 17:01]のコメントより:
"1,2,3,4,5"だとカンマ区切りで分割できるのですが、"12345"の場合どう分割すればいいのかを知りたいです。
今回はstring配列です、
愚直ですが、こんな方法もありますということで。
C#
1string s1 = "12345";
2string[] a1 = s1.ToCharArray().Select(c => new string(c, 1)).ToArray();
スペースやカンマも含めるなら、ということで全文サンプルです。
C#
1using System;
2using System.Linq;
3
4class Program
5{
6 static void Main(string[] args)
7 {
8 // (1) "12345"だけだったら
9 string s1 = "12345";
10 string[] a1 = s1.ToCharArray().Select(c => new string(c, 1)).ToArray();
11 Console.WriteLine($"(1) {s1}");
12 Console.WriteLine("result: " + string.Join('-', a1));
13
14 // (2) ',', ' ', 区切り無しだったら
15 s1 = "1,2 3 4 567,8";
16 // Split()してJoin()で区切り無しでつなげる
17 string s2 = string.Join("", s1.Split(new char[] { ' ', ',' }));
18 string[] a2 = s2.ToCharArray().Select(c => new string(c, 1)).ToArray();
19 Console.WriteLine($"(2) {s1}");
20 Console.WriteLine("result: " + string.Join('-', a2));
21 }
22}
実行結果です。
terminal
1(1) 12345
2result: 1-2-3-4-5
3(2) 1,2 3 4 567,8
4result: 1-2-3-4-5-6-7-8
もっとスマートなやり方があるかもしれませんね。一例ということでの回答です。
追記しました:
「C#をはじめてまだ日も浅い」とのことでしたので、Linqなど使わず、実直(?)に処理する簡単な例をおまけとして追記しておきます。※stringからchar配列は簡単ですが、1文字ずつのstring配列化は依然として面倒です。
C#
1string s3 = "1,2 3 4 567,8";
2string charsToSkip = ", "; // スキップしたい文字群(区切り文字に相当)
3List<string> slist = new List<string>();
4foreach (char c in s3.ToCharArray())
5{
6 if (charsToSkip.Contains(c))
7 {
8 // スキップしたい文字
9 ;
10 }
11 else
12 {
13 slist.Add(new string(c, 1));
14 }
15}
16string[] a3 = slist.ToArray();
17Console.WriteLine($"(3) {s3}");
18Console.WriteLine("result: " + string.Join('-', a3));
19
20/* (2)と同じ出力を得ます。
21 (3) 1,2 3 4 567,8
22 result: 1-2-3-4-5-6-7-8
23 */
「色々な方法がある」ということです。