2013-03-01 35 views
0

Dart是否等同于C++的“\ n”?Dart当量 n

在下面的例子:

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

我想有这是在单独的行“readlines方法[J]”的文字。这怎么能做到?

例如:

readlines方法是字符串列表,它包含:“嘿我的名字是Cheshie”和“谢谢你们试图帮助”。

在上面的代码中,我试图写列表的内容到一个文件中,使用“OUTPUTFILE”,我想它写成如下:

嘿我的名字是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!'); 
} 

回答

2

\n不是C++具体的,你可以就其写入文件之前添加到您的字符串的结尾。所以,使用类似

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

谢谢,但你确定吗?我试着用\ n,正如你所说的那样,但它的反应很奇怪:它将'readLines'的内容写入'outputFile'j次,每个末尾都带有字符'[j]'(包括逗号)线。所以是的,它确实跳到了下一行,但它应该每次只在第j个地方打印字符串。那是怎么发生的...?再次感谢。 – Cheshie 2013-03-02 17:45:27

+0

听起来和你一样'$ readLines [j] \ n',而不是'$ {readLines [j]} \ n'。花括号在那里有很大的不同。 – 2013-03-04 07:31:11

+0

否...与大括号在输出文件中没有区别(文字不会移动到下一行)。 :( – Cheshie 2013-03-04 21:53:01

1

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

readLines [j]是一堆单词,但我希望输出是:“Dart很有趣”,并在下一行:“这很容易学习”。所以我不能用\ n来替换空格。 JustDanyul建议的答案看起来是正确的方向,只是它不起作用... – Cheshie 2013-03-04 21:55:42

+0

Chesie,你能用输入的例子和你期望的输出例子来更新你的问题吗?这样,我可以肯定地帮你:) – 2013-03-05 01:42:40

+0

好的,我做到了。现在更清楚了吗? =) – Cheshie 2013-03-05 18:33:08