Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/342.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
Python“;zfill();等效于OCaml_Python_String_Ocaml_Leading Zero - Fatal编程技术网

Python“;zfill();等效于OCaml

Python“;zfill();等效于OCaml,python,string,ocaml,leading-zero,Python,String,Ocaml,Leading Zero,我是一个初学者,我必须学习Ocaml来进行科学编程。我只有一个问题: Ocaml中是否有一种与Python的.zfill()方法等效的方法来使前导零出现在字符串中? 我想没有 当您处理数字时,您可以使用内置函数轻松完成此操作。例如,要打印前导0超过30个字符的数字142857,请使用Printf.Printf“%030d”142857 如果可以使用前导空格而不是前导零,还可以使其与字符串一起工作。例如,Printf.Printf“%30s”abcdefg“ 最后,如果有必要,您可以根据需要定义

我是一个初学者,我必须学习Ocaml来进行科学编程。我只有一个问题: Ocaml中是否有一种与Python的
.zfill()
方法等效的方法来使前导零出现在字符串中?

我想没有

  • 当您处理数字时,您可以使用内置函数轻松完成此操作。例如,要打印前导0超过30个字符的数字142857,请使用
    Printf.Printf“%030d”142857
  • 如果可以使用前导空格而不是前导零,还可以使其与字符串一起工作。例如,
    Printf.Printf“%30s”abcdefg“
  • 最后,如果有必要,您可以根据需要定义自己的函数
前两个选项的工作方式是使用
Printf
,这也是一个非常有用的方法,您确实应该在某个时候学习。是OCaml的文档,但许多编程语言都有类似的工具

%030d
中,我们从
%d
开始,它是一个占位符,将被一个整数替换(在我们的例子中,是142857)。通过在两个字符之间添加30,我们将其最小宽度固定为30(默认为右对齐):
%30d
。最后,我们添加了使前导字符为零而不是空格的选项,方法是在百分号后添加一个0

%30s
只是至少30个字符的右对齐字符串的占位符(带前导空格,因为前导零的选项仅适用于数字)


如果由于某种原因无法在场景中使用精心选择的Printf格式,那么这里有一个zfill函数:

让zfill n s=
设长度=字节数。长度为s英寸

如果OCaml中的n字符串是不可变的。这意味着您不应该修改字符串,而应该创建一个新字符串

标准库中没有zfill函数,但您可以通过这种方式轻松创建一个:

let zfill s width =
  let to_fill = width - (String.length s) in
  if to_fill <= 0 then s
  else (String.make to_fill '0') ^ s
让Z填充s宽度=
让to_fill=宽度-(String.length s)in

如果要填写,欢迎使用SO!出于好奇,您是否需要此函数?您好,欢迎使用stack overflow。请花时间阅读,如果您不提供任何代码,我们将无法帮助您,请您将code@PatJ谢谢,我没有意识到字节。blit是一件事。这样应该更简洁有效。我更新了我的答案。