【问题标题】:How to prevent adding suffix in blank lines of large string? C#如何防止在大字符串的空白行中添加后缀? C#
【发布时间】:2019-03-25 07:11:25
【问题描述】:

我想为大字符串的每一行添加前缀,不包括空行。下面的代码也为空行添加了前缀。我搜索了很多网站,但我找不到合适的解决方案。这是我的代码:

string txt_input="abc \n \n efg \n \n \n hij";
string source = string.Join(Environment.NewLine, txt_input);

string result = string.Join(Environment.NewLine, source
                 .Split(new string[] { Environment.NewLine }, StringSplitOptions.None)
                 .Select(line => txt_prefix + line));

【问题讨论】:

  • 您是否尝试将“/n”替换为“\n”?
  • 您的代码没有多大意义。你为什么使用Join 两次?您想在每个字符后换行吗?
  • 考虑到您在名为text 的字符串变量中有所需的带有换行符的字符串,您可以这样做:IEnumerable<string> linesWithPrefix = text.Split(Environment.NewLine).Select(line => string.IsNullOrWhiteSpace(line) ? line : txt_prefix + line);

标签: c# asp.net webforms prefix


【解决方案1】:

你的问题有点模糊,所以我会假设你的输入看起来像你提供的 txt_input:

string txt_input="abc \n \n efg \n \n \n hij";

你想要一个这样的输出:

var ouput = "myPrefix_abc \n \n myPrefix_efg \n \n \n myPrefix_hij";"

这样的事情应该可以工作:

string prefix = "myPrefix_";
string txt_input="abc \n \n efg \n \n \n hij";
var split = txt_input.Split(new[] {"\n"}, StringSplitOptions.None);
var prefixedList = new List<string>();
foreach(var line in split){
    if(string.IsNullOrWhiteSpace(line)) {
        prefixedList.Add(line);
        continue;
    }
    prefixedList.Add(prefix + line);
}
var output = string.Join("\n", prefixedList.ToArray());
Console.WriteLine(output);

如果您真的想查看 \n 字符,请将倒数第二行替换为

var output = string.Join("\\n", prefixedList.ToArray());

(注意'\n'之前的第二个'\')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-03
    • 2021-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多