在C#字符串中的换行 在C#中,可以使用换行符来在字符串中创建换行。换行符可以通过在字符串中插入特殊的转义序列来表示。在C#中,常见的换行符是`\n`。 例如,下面的代码演示了如何在C#字符串中使用换行符: ``` string message = "Hello\nWorld"; Console.WriteLine(message); ``` 输出将是: ``` Hello World ``` 通过使用换行符,可以在字符串中创建多行文本。请注意,在字符串中使用换行符时,需要使用双引号将整个字符串

8 浏览
0 Comments

在C#字符串中的换行 在C#中,可以使用换行符来在字符串中创建换行。换行符可以通过在字符串中插入特殊的转义序列来表示。在C#中,常见的换行符是`\n`。 例如,下面的代码演示了如何在C#字符串中使用换行符: ``` string message = "Hello\nWorld"; Console.WriteLine(message); ``` 输出将是: ``` Hello World ``` 通过使用换行符,可以在字符串中创建多行文本。请注意,在字符串中使用换行符时,需要使用双引号将整个字符串

我在下面的C#字符串中遇到了一个随机的换行符,无法确定为什么输出会分成两行。

我实际上只尝试了两种不同的方式来定义变量。两种方式都产生了相同的结果。

string cmdStr = "docker images | grep -E '^prabhasgupte/webmon.*latest' | head -1 | awk '{print $3}'";
Console.Write(cmdStr);
string imageId = commands.Bash(cmdStr);
Console.Write(imageId);
string x = $"docker tag {imageId} scan_target:{imageId}";
Console.Write(x);

这是我收到的输出:

docker images | grep -E '^prabhasgupte/webmon.*latest' | head -1 | awk '{print $3}'

0043699b906f

docker tag 0043699b906f

scan_target:0043699b906f

public static string Bash(this string cmd)
{
    var escapedArgs = cmd.Replace("\"", "\\\"");
    var process = new Process()
    {
        StartInfo = new ProcessStartInfo
        {
            FileName = "/bin/bash",
            Arguments = $"-c \"{escapedArgs}\"",
            RedirectStandardOutput = true,
            UseShellExecute = false,
            CreateNoWindow = true,
        }
    };
    process.Start();
    string result = process.StandardOutput.ReadToEnd();
    process.WaitForExit();
    return result;
}

0
0 Comments

在C#字符串中出现换行的原因是,来自bash命令的imageId中有一个换行符。尝试修剪结果:

   string imageId = commands.Bash(cmdStr).TrimEnd( '\r', '\n', Environment.NewLine.ToCharArray() );

当然,没错,换行符是来自bash命令,但为什么要在C#中添加一个临时解决方法,而不是解决问题的真正来源(awk)呢?

我相信在调用脚本时可以将cat作为命令行参数传递,这可能会真正删除它,我自己没有尝试过,但会很有趣。

@Çöđěxěŕ cat意味着“流管道”(通常用于文件),所以是的,它确实“泵送”bash的输出。我相当确定它不会插入换行符,因为在grep其结果是非常常见的。 顺便说一句,我不同意将其标记为一个相同问题的重复..他正在问“为什么”这个“随机”的换行符出现..我是(唯一的)告诉他为什么这个“随机换行符”在那里的人。

0
0 Comments

在C#字符串中插入换行符可能是awk插入新行的默认行为。我从一个与awk相关的stackoverflow问题中复制了以下内容:

在AWK中,输出记录分隔符(ORS)变量默认为“\ n”,并在每行打印后打印。如果您希望连续打印所有内容,您可以在BEGIN部分将它更改为“ ”。

根据上述信息,可以得出以下结论:

问题的原因是awk在字符串中插入了换行符,默认行为是在每行后插入换行符。解决方法是在awk的BEGIN部分将输出记录分隔符(ORS)变量更改为“ ”,以便连续打印所有内容。下面是解决方法的代码示例:

BEGIN {

ORS = " ";

}

以上是关于在C#字符串中插入换行符的问题的原因和解决方法。希望对你有帮助!

0