Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/273.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# 在.NET中,PadLeft()和PadRight()的R等价物是什么?_C#_.net_R - Fatal编程技术网

C# 在.NET中,PadLeft()和PadRight()的R等价物是什么?

C# 在.NET中,PadLeft()和PadRight()的R等价物是什么?,c#,.net,r,C#,.net,R,在.NET中,我可以使用和在字符串的左/右两侧填充空格 var myString = "test"; Console.WriteLine(myString.PadLeft(10)); //prints " test" Console.WriteLine(myString.PadLeft(2)); //prints "test" Console.WriteLine(myString.PadLeft(10, '.')); //prints "......test" Console.

在.NET中,我可以使用和在字符串的左/右两侧填充空格

var myString = "test";
Console.WriteLine(myString.PadLeft(10)); //prints "      test"
Console.WriteLine(myString.PadLeft(2)); //prints "test"
Console.WriteLine(myString.PadLeft(10, '.')); //prints "......test"    
Console.WriteLine(myString.PadRight(10, '.')); //prints "test......"

R中的等价物是什么?

使用内置于R中的sprintf:

# Equivalent to .PadLeft.
sprintf("%7s", "hello") 
[1] "  hello"

# Equivalent to .PadRight.
sprintf("%-7s", "hello") 
[1] "hello  "

请注意,与.NET一样,指定的数字是我们希望适合文本的总宽度。

您可以将长度作为参数传入:

PadLeft <- function(s, x) {
  require(stringr)
  sprintf("%*s", x+str_length(s), s)
}

PadRight <- function(s, x) {
  require(stringr)
  sprintf("%*s", -str_length(s)-x, s)
}

PadLeft("hello", 3)
## [1] "   hello"
PadRight("hello", 3)
## [1] "hello   "

PadLeft使用
stru-pad
from
stringr

library(stringr)
str_pad("hello", 10)
str_pad("hello", 10, "right")
str_pad("hello", 10, "both")

很好,真的很好。我对C#很熟悉,所以很高兴知道我可以让我的R代码看起来更熟悉一点。为什么不在这里使用
nchar
?为了避免NA案例?关于
.padlift()
.padrright()
做什么的示例/解释会阻止我否决这一点。请随意编辑。您希望/需要允许用户使用可设置的填充字符的答案(如您的示例中所示),还是空间填充足够?@Ben Bolker我对空间填充很满意。我甚至都不知道。PadRight可以用一个特定的字符来填充,但我可以想象这可能很有用。啊,我现在明白了。我确实看了一遍,但错过了这个电话。