<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ja">
	<id>https://www.typea.info/tips_/index.php?action=history&amp;feed=atom&amp;title=C_Charp%E5%9B%BA%E5%AE%9A%E9%95%B7%E5%88%86%E5%89%B2</id>
	<title>C Charp固定長分割 - 版の履歴</title>
	<link rel="self" type="application/atom+xml" href="https://www.typea.info/tips_/index.php?action=history&amp;feed=atom&amp;title=C_Charp%E5%9B%BA%E5%AE%9A%E9%95%B7%E5%88%86%E5%89%B2"/>
	<link rel="alternate" type="text/html" href="https://www.typea.info/tips_/index.php?title=C_Charp%E5%9B%BA%E5%AE%9A%E9%95%B7%E5%88%86%E5%89%B2&amp;action=history"/>
	<updated>2026-05-13T19:27:45Z</updated>
	<subtitle>このウィキのこのページに関する変更履歴</subtitle>
	<generator>MediaWiki 1.34.0</generator>
	<entry>
		<id>https://www.typea.info/tips_/index.php?title=C_Charp%E5%9B%BA%E5%AE%9A%E9%95%B7%E5%88%86%E5%89%B2&amp;diff=33245&amp;oldid=prev</id>
		<title>Piroto: ページの作成:「&lt;pre&gt; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Text.RegularExpressions;  namespace FieldSplitte…」</title>
		<link rel="alternate" type="text/html" href="https://www.typea.info/tips_/index.php?title=C_Charp%E5%9B%BA%E5%AE%9A%E9%95%B7%E5%88%86%E5%89%B2&amp;diff=33245&amp;oldid=prev"/>
		<updated>2021-07-08T11:17:30Z</updated>

		<summary type="html">&lt;p&gt;ページの作成:「&amp;lt;pre&amp;gt; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Text.RegularExpressions;  namespace FieldSplitte…」&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新規ページ&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.IO;&lt;br /&gt;
using System.Linq;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using System.Text.RegularExpressions;&lt;br /&gt;
&lt;br /&gt;
namespace FieldSplitter&lt;br /&gt;
{&lt;br /&gt;
    public class FieldSplitterService&lt;br /&gt;
    {&lt;br /&gt;
        public string SplitField(string lengthString, string inputData, string splitChar)&lt;br /&gt;
        {&lt;br /&gt;
            var buf = new StringBuilder();&lt;br /&gt;
&lt;br /&gt;
            List&amp;lt;int&amp;gt; lengthList = GetLengthList(lengthString);&lt;br /&gt;
&lt;br /&gt;
            using (var reader = new StringReader(inputData))&lt;br /&gt;
            {&lt;br /&gt;
                string line = null;&lt;br /&gt;
                while((line = reader.ReadLine()) != null) {&lt;br /&gt;
                    buf.Append(SplitLine(lengthList, splitChar ,line));&lt;br /&gt;
                    buf.Append(Environment.NewLine);&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            return buf.ToString();&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private string SplitLine(List&amp;lt;int&amp;gt; lengthList, string splitChar, string line)&lt;br /&gt;
        {&lt;br /&gt;
            var buf = new StringBuilder();&lt;br /&gt;
            int pos = 0;&lt;br /&gt;
            foreach(int len in lengthList)&lt;br /&gt;
            {&lt;br /&gt;
                if (len &amp;gt; 0)&lt;br /&gt;
                {&lt;br /&gt;
                    int stepc = 0;&lt;br /&gt;
                    int diflen = 0;&lt;br /&gt;
                    for(int i=pos; i&amp;lt;line.Length; i++)&lt;br /&gt;
                    {&lt;br /&gt;
                        var c = line[i];&lt;br /&gt;
                        if (((int)c) &amp;lt;= 255)&lt;br /&gt;
                        {&lt;br /&gt;
                            diflen += 1;&lt;br /&gt;
                        }&lt;br /&gt;
                        else&lt;br /&gt;
                        {&lt;br /&gt;
                            diflen += 2;&lt;br /&gt;
                        }&lt;br /&gt;
                        buf.Append(c);&lt;br /&gt;
                        stepc++;&lt;br /&gt;
                        if (diflen &amp;gt;= len)&lt;br /&gt;
                        {&lt;br /&gt;
                            break;&lt;br /&gt;
                        }&lt;br /&gt;
                    }&lt;br /&gt;
                    pos += stepc;&lt;br /&gt;
                }&lt;br /&gt;
                buf.Append(splitChar);&lt;br /&gt;
            }&lt;br /&gt;
            if (pos &amp;lt; line.Length)&lt;br /&gt;
            {&lt;br /&gt;
                buf.Append(line.Substring(pos));&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            return buf.ToString();&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private List&amp;lt;int&amp;gt; GetLengthList(string lengthList)&lt;br /&gt;
        {&lt;br /&gt;
            var strLenList = Regex.Split(lengthList, @&amp;quot;[^0-9]&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
            var ret = strLenList&lt;br /&gt;
                .Where(len =&amp;gt; Regex.IsMatch(len, @&amp;quot;[0-9]+&amp;quot;))&lt;br /&gt;
                .Select(len =&amp;gt; int.Parse(len));&lt;br /&gt;
&lt;br /&gt;
            return ret.ToList();&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Piroto</name></author>
		
	</entry>
</feed>