たとえば、改行が混在するソースファイルをカウントできるアルゴリズムには、特定の説明 (正規表現などで難読化されすぎていない説明) が必要です。
'\r', '\n', '\r\n', '\n\r'
現在、次のアルゴリズムがあります。大丈夫ですか?:
最初の改行タイプの文字の「境界」に常にいるようにします。
そのイベントで、現在のバイト文字を比較します。
3.1. '\n' の場合は、現在の行を終了して新しい行を開始するものとしてカウントします。
3.2. '\r' の場合、次の文字を読み取り (テキスト バッファーの制限を超えていない場合)、それが '\n' かどうかを確認します。そうであれば、'\r\n' 改行として数えます。
3.3. それが '\r' で、次の文字が '\n' でない場合、'\r' によって生成された改行として数えます。現在の行を終了としてマークし、それを新しい行の開始としてカウントします。
有用な場合は、Web ブラウザー間でコピー/貼り付けされたソース ファイル、および/またはさまざまな種類の改行を含む複数のファイルから追加されたソース ファイルの "移植性" を高める必要があり、必要な解析ツールがあります。すべてのケースで正しく堅牢な動作をするようにします。