8

C++ の "\n" に相当する Dart はありますか?

次の例では:

for(int j=0;j<readLines.length;j++)
{
    outputFile.writeAsStringSync(readLines[j], mode: FileMode.APPEND);
}

「readLines[j]」にあるテキストを別の行に入れたいと思います。これはどのように行うことができますか?

例えば:

readLines は文字列のリストで、「やあ、私の名前は Cheshie です」と「助けてくれてありがとう」が含まれています。

上記のコードでは、「outputFile」を使用してリストの内容をファイルに書き込もうとしていますが、次のように書きたいと思います。

ねえ、私の名前はチェシーです

助けてくれてありがとう

つまり、すべての readLines[j] を別の行に記述する必要があります。

ありがとう。

コード:

import 'dart:io';

void func (String foldername)
{
  Directory thisFolder = new Directory (foldername);

  List<File> files = thisFolder.listSync(recursive:false);
  int number=1;
  String oldContent='';
  String newContent='';
  String concatenate='';
  String name='';
  int nameStart;
  int nameLength;
  for (int i=0; i<files.length; i++)
  {
    if (files[i].name.endsWith('.in'))
    {
      oldContent=files[i].readAsStringSync(Encoding.UTF_8);
      newContent=number.toString();

      var Strings=[newContent, oldContent];
      concatenate=Strings.join();

      files[i].writeAsStringSync(concatenate);
      number++;
    }   

// =====================ここから関連部分が始まります==================

    nameLength=files[i].name.length;
    nameStart=files[i].name.lastIndexOf('\\', nameLength);
    name=files[i].name.slice(nameStart+1, nameLength);
    if (name.compareTo('hello.in')==0)
    {
      File outputFile=new File('hello.out');
      if (outputFile.existsSync())
      {
        outputFile.deleteSync();
      }
      outputFile.createSync();
      List<String> readLines=files[i].readAsLinesSync(Encoding.UTF_8);
      for(int j=0;j<readLines.length;j++)
      {
        outputFile.writeAsStringSync('$readLines[j]\n', mode: FileMode.APPEND); 
        //outputFile.writeAsStringSync('\n', mode: FileMode.APPEND); 
        //  TODO:   figure out how to get to the next line.

        if (readLines[j].contains('you'))
          print(readLines[j]);
      }
    }
  }
}


void main ()
{
  func('In files');
  print('the end!');
}
4

5 に答える 5

8

\nは C++ 固有のものではありません。ファイルに書き込む前に文字列の末尾に追加するだけです。だから、次のようなものを使用してください

outputFile.writeAsStringSync('${readLines[j]}\n', mode: FileMode.APPEND);
于 2013-03-01T14:38:51.680 に答える
2

の内容はreadLines[j]?言葉の束?

次のようなものを想定します。

var readLines = [
  'Dart is fun',
  'It is easy to learn'
];

そして、次を出力したいとします。

Dart
is
fun
It
is
easy
to
learn

これを試して:

for (String line in readLines) {
  String split = line.replaceAll(new RegExp(r'\s+'), '\n');
  outputFile.writeAsStringSync(split, mode: FileMode.APPEND);
}
于 2013-03-03T04:36:26.350 に答える
1

\nライン フィード (LF) 文字だけを使用しているため、Windows では機能しません。\r\nWindows で新しい行を取得するには、キャリッジ リターン + ライン フィード (CRLF)を使用する必要があります。

詳細については、https://en.wikipedia.org/wiki/Newline#Representationを確認してください。

Windows 10 とそれ以前のバージョンとの間にいくつかの違いが見られました。それが Windows 自体に関係があるのか​​、それとも Dart がバージョンごとにコンパイルする方法に関係があるのか​​はわかりません。理解するにはさらにデバッグが必要です...

于 2020-07-25T17:49:31.517 に答える