Dart是否等同于C ++" \ n"?
在以下示例中:
for(int j=0;j<readLines.length;j++)
{
outputFile.writeAsStringSync(readLines[j], mode: FileMode.APPEND);
}
我想提供&#34; readLines [j]&#34;在单独的行中。怎么可以这样做?
例如:
readLines是一个字符串列表,它包含:&#34;嘿,我的名字是Cheshie&#34;,&#34;谢谢你们试图帮助&#34;。
在上面的代码中,我试图使用&#34; outputFile&#34;将列表的内容写入文件,我希望它写成如下:
嘿,我的名字是Cheshie
感谢各位帮忙
也就是说,每个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!');
}
答案 0 :(得分:4)
在当前版本中有效。
void main() {
print('word\nsecondword');
}
控制台:
word
secondword
答案 1 :(得分:2)
\n
不是特定于C ++的,您可以在将其写入文件之前将其添加到字符串的末尾。所以,使用像
outputFile.writeAsStringSync('${readLines[j]}\n', mode: FileMode.APPEND);
答案 2 :(得分: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);
}
答案 3 :(得分:0)
它在Windows上不起作用,因为您仅使用\n
作为换行(LF)字符。要在Windows中换行,您需要将\r\n
用于回车+换行(CRLF)。
有关此详情,请检查https://en.wikipedia.org/wiki/Newline#Representation
我已经看到Windows 10与旧版本之间的一些差异。我不知道它是否与Windows本身或Dart为每个版本编译的方式有关。需要更多调试才能了解...