Dart等效值\n

vlju58qv  于 2023-11-14  发布在  其他
关注(0)|答案(6)|浏览(115)

是否有与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!');
}

g9icjywg

g9icjywg1#

\n不是C++特定的,您可以在将其写入文件之前将其添加到字符串的末尾。

outputFile.writeAsStringSync('${readLines[j]}\n', mode: FileMode.APPEND);

字符串

gmxoilav

gmxoilav2#

在当前版本中,它可以工作。

void main() {
  print('word\nsecondword');
}

字符串
控制台:

word
secondword

j2cgzkjk

j2cgzkjk3#

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);
}

pgpifvop

pgpifvop4#

它在Windows上不起作用,因为你只使用\n,这是换行(LF)字符。要在Windows中获得一个新行,你需要使用\r\n回车+换行(CRLF)。
有关此方面的更多信息,请访问https://en.wikipedia.org/wiki/Newline#Representation
我已经看到了Windows 10和旧版本之间的一些差异。我不知道这是否与Windows本身或Dart为每个版本编译的方式有关。它需要更多的调试才能理解...

de90aj5v

de90aj5v5#

下面这句话对我很管用:

file.writeAsStringSync('$data\r', mode: FileMode.append);

字符串
这里data是你要写字符串,\r会把光标移到下一行。

4xrmg8kj

4xrmg8kj6#

Dart 3.2.0引入了Platform.lineTerminator,它可以用来获得适合操作系统的终止符。

相关问题