在Mathematica中创建一个可变长度的空格字符串

时间:2011-05-21 13:56:28

标签: regex wolfram-mathematica

以下Mathematica函数f创建一个长度为n的空格字符串。

f[n_]:=Fold[StringJoin,"",Array[" "&,n]]

创建此功能必须有多种选择。

你会怎么做?

5 个答案:

答案 0 :(得分:10)

f[n_] := StringJoin @ ConstantArray[" ", n]

编辑,因为@与@@一样惯用,而且速度要快一些(感谢Mr.Wizard进行基准测试),并且我更新了解决方案。

答案 1 :(得分:5)

f[n_] := FromCharacterCode[ConstantArray[32, {n}]]

顺便说一下:你应该知道faq中这类问题是不受欢迎的:

  

我不应该在这里问什么样的问题?

     

你应该只问实际,   基于实际的问题   你遇到的问题。健谈的,   开放式问题减少了   我们网站的用处和推动其他   首页上的问题。至   防止你的问题   标记并可能删除,避免   问主观问题......

1. every answer is equally valid: “What’s your favorite ______?”

如果问题已经结束,请不要感到惊讶。

答案 2 :(得分:3)

f[n_] := StringJoin[Table[" ", {n}]]

答案 3 :(得分:2)

SpacerInvisible对于创建空格也很有用,在指定空间大小方面存在差异。

答案 4 :(得分:2)

f = ConstantArray[" ", #] <> "" &;

这大约是Thies Heidecke的功能的两倍,但不及Sjoerd的快。


对于较大的n,较长的初始字符串很有帮助。这比Sjoerd n > 10000

的方法快
f2ss = " "~ConstantArray~499 <> "";
f2[n_ /; n < 500] := StringTake[f2ss, n]
f2[n_ /; n < 5000] := StringTake[ConstantArray["          ", ⌈n/10⌉] <> "", n]
f2[n_] := StringTake[ConstantArray[f2@400, ⌈n/400⌉] <> "", n]