Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/276.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# Python长字符串由\n分隔,长字符串c的拆分模拟#_C#_Python_String - Fatal编程技术网

C# Python长字符串由\n分隔,长字符串c的拆分模拟#

C# Python长字符串由\n分隔,长字符串c的拆分模拟#,c#,python,string,C#,Python,String,在python中,有一个选项可以执行此操作: patterns = [s for s in""" ATGCG GCATG CATGC AGGCA GGCAT """.split() if s] 在c#中,我有一个字符串,如: ATGCG GCATG CATGC AGGCA GGCAT 如果我这样做 string patterns = " ATGCG GCATG CATGC AGGCA GGCAT"; 这是不正确的 所以我想用 string patte

在python中,有一个选项可以执行此操作:

patterns = [s for s in"""
ATGCG
GCATG
CATGC
AGGCA
GGCAT
""".split() if s]
在c#中,我有一个字符串,如:

ATGCG
GCATG
CATGC
AGGCA
GGCAT
如果我这样做

string patterns = "
    ATGCG
    GCATG
    CATGC
    AGGCA
    GGCAT";
这是不正确的

所以我想用

string patterns = "ATGCG\nGCATG\nCATGC\nAGGCA\nGGCAT";
            var elems = patterns.Split(new[] { "\n" }, StringSplitOptions.RemoveEmptyEntries);
但是我不想把
\n
每一行都放进去,有更好的方法吗? 也许是从一个文件中读取那个字符串?c#代码会是什么样子

我在想

StringBuilder sb = new StringBuilder();
using (StreamReader sr = new StreamReader("TestFile.txt")) 
{
    String line;
    while ((line = sr.ReadLine()) != null) 
    {
        sb.AppendLine(line);
    }
}
string allines = sb.ToString();
是这样吗

全部答案是:

using System;
using System.Collections.Generic;
using System.Text;
using System.Linq;
namespace ConsoleApplication3
{
    class Program
    {
        static void Main(string[] args)
        {
            string patterns = @"
 ATGCG
 GCATG
 CATGC
 AGGCA
 GGCAT    
";
            var elems = patterns.Split(new[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries);
            var results = elems.SelectMany((p1, i1) => elems.Where((p2, i2) => i1 != i2).Select(p2 => new { p1, p2 }))
                  .Where(x => x.p1.Substring(1) == x.p2.Substring(0, x.p2.Length - 1)).ToList();
            string result = "";
            foreach (var pair in results)
            {
                result += pair.p1 + " -> " + pair.p2 +"\n";
            }
            System.IO.File.WriteAllText("out.txt", result);



        }
    }
}

我不确定我是否完全明白您的意思,但是如果您想在几行上定义一个变量,可以使用定义字符串,然后在
环境中拆分。换行符
\r\n

下面是您如何将各行输出的方法:

var elems = patterns.Split(new[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries);

我不确定我是否完全明白您的意思,但是如果您想在几行上定义一个变量,可以使用定义字符串,然后在
环境中拆分。换行符
\r\n

下面是您如何将各行输出的方法:

var elems = patterns.Split(new[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries);

如何更改line
var elems=patterns.Split(新[]{“\n”},StringSplitOptions.RemoveEmptyEntries)我将在任何/所有空格上拆分(使用或)-用于编辑文件的编辑器可能与运行该文件的环境不同。。而且很容易在右边隐藏一个额外的空间。@Grantwiney如果不能接受在所有空格上拆分(尽管我认为这是Python中
str.split()
的工作方式),我仍然可能在
[\r\n]+
上拆分(与当前的环境新行相反)。在任何情况下,逐字字符串都是类似的语法我将在任何/所有空格上拆分(使用或)-用于编辑文件的编辑器可能与运行该文件的环境不同。。而且很容易在右边隐藏一个额外的空间。@Grantwiney如果不能接受在所有空格上拆分(尽管我认为这是Python中
str.split()
的工作方式),我仍然可能在
[\r\n]+
上拆分(与当前的环境新行相反)。在任何情况下,逐字字符串都是类似的语法。
var elems = patterns.Split(new[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries);