在 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);
}
}
}
最佳答案
我不确定我是否完全理解你的意思,但如果你想在多行中定义一个变量,你可以使用 verbatim string literal 来定义字符串。 , 然后拆分 Environment.NewLine
(\r\n
)
string patterns = @"
ATGCG
GCATG
CATGC
AGGCA
GGCAT";
这里是你如何得到单独的行:
var elems = patterns.Split(new[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries);
关于c# - Python 长字符串由\n 分隔并拆分模拟长字符串 c#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20463087/