Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何通过选择多行反转字符串内容?_C#_Reverse_Record - Fatal编程技术网

C# 如何通过选择多行反转字符串内容?

C# 如何通过选择多行反转字符串内容?,c#,reverse,record,C#,Reverse,Record,我在网上找到了很多关于反转字符串和整个文本文件的资源,但是没有任何东西能产生我想要的结果 例如,基本文本文件可能如下所示: 1 Person One Company Name 100 San Francisco Blvd, 000

我在网上找到了很多关于反转字符串和整个文本文件的资源,但是没有任何东西能产生我想要的结果

例如,基本文本文件可能如下所示:

1                                                 
Person One                                         
Company Name                                           
100 San Francisco Blvd, 000                                 
Dublin CA 94568                                   


2                                                 
Person Two                                       
Company Name                                               
111 Grove St, 000                                 
Montreal CANADA 93940 
这就是文件的输入方式。我要找的是:

2                                                 
Person Two                                       
Company Name                                               
111 Grove St, 000                                 
Montreal CANADA 93940 

1                                                 
Person One                                         
Company Name                                           
100 San Francisco Blvd, 000                                 
Dublin CA 94568               
我在网上尝试了几种解决方案,通常会出现以下情况之一:

1) 正文颠倒了。例如,公司名称变为emaN ynapmoC

2) 类似的事情发生了:

Montreal CANADA 93940 
111 Grove St, 000 
Company Name
Person Two
2
给定的是列长度(我总是知道地址字段中有多少行),我总是知道总共有多少行。每条记录之间有一个空白行

我试图弄清楚如何将filename.txt转换为filename-reversed.txt


TLDR:我想取x行数并反转它们,这样它们就不会混合/混乱。

您需要将文件分解为“记录”。一旦你有了记录,而不仅仅是行,倒序应该是一项简单的任务


最简单的方法是在每第n行中断时将文件拆分为字符串。您可以将这些N行字符串加载到列表中。然后,只需反向遍历列表并将记录转储到文件中。

您需要将文件拆分为“记录”。一旦你有了记录,而不仅仅是行,倒序应该是一项简单的任务

最简单的方法是在每第n行中断时将文件拆分为字符串。您可以将这些N行字符串加载到列表中。然后,只需反向遍历列表并将记录转储到文件中。

在python中:

blocks = []
with open(filename, "r") as f:
    block = ""
    for i, line in enumerate(f):
        block += line
        if i % block_line_size == 0:
            blocks.append(block)
            block = ""
with open(new_file_name, "w") as f2:
    for block in blocks[::-1]:
        f2.write(block)
在python中:

blocks = []
with open(filename, "r") as f:
    block = ""
    for i, line in enumerate(f):
        block += line
        if i % block_line_size == 0:
            blocks.append(block)
            block = ""
with open(new_file_name, "w") as f2:
    for block in blocks[::-1]:
        f2.write(block)

那么,您需要的是从字符串创建一个记录数组,对吗?这个字符串中的记录由一个双行分隔符分隔是的,就是这样。我需要能够以7行为例,并用其他7行将其反转。每7行是一条记录。那么问题是什么?算法看起来非常简单。那么,您需要的是从字符串创建一个记录数组,对吗?这个字符串中的记录由一个双行分隔符分隔是的,就是这样。我需要能够以7行为例,并用其他7行将其反转。每7行是一条记录。那么问题是什么?这个算法看起来很简单。@ryanyyu你可能觉得很简单,但不是。。它实现了OP所期望的:)。是否要为代码编写一些解释?或者甚至是一个代码演示?正则表达式有点神秘。哦,我明白了。它尝试匹配一个文字换行符,紧接着是另一个换行符(在记录中显示为空行)。也许值得解释一下。也许我遗漏了一些明显的东西,但我不能使用。在组中反转?事实上,我理解其余的部分,这是非常聪明的正则表达式。@rohanharrison
使用System.Linq
?@Ryanyuyuyu在你看来可能是这样,但不是。。它实现了OP所期望的:)。是否要为代码编写一些解释?或者甚至是一个代码演示?正则表达式有点神秘。哦,我明白了。它尝试匹配一个文字换行符,紧接着是另一个换行符(在记录中显示为空行)。也许值得解释一下。也许我遗漏了一些明显的东西,但我不能使用。在组中反转?实际上,我理解其余的部分,这是非常聪明的正则表达式。@rohanharrison
使用System.Linq
?问题被标记为
c
+这个答案即使在python中也不会返回输出操作exts这个答案被标记为
c
+这个答案即使在python中也不会返回输出操作exts