如何将字符串切断为给定长度的子字符串

zen*_*dar 1 f#

我有字符串,我想切断给定长度n的子串数组.我对余数不感兴趣(如果字符串的长度不能除以n而没有余数)

let ChopString (myString : string) n = 
    let res = 
        seq{ 
            for i = 0 to myString.Length / n - 1 do
                yield( String.sub myString (i*n) n )
            }    
        |> Seq.to_array
    res
Run Code Online (Sandbox Code Playgroud)

这是我能做的最好的事情.它看起来很难看.

是否有更好/更短的版本,也许没有for循环?

Jul*_*iet 9

stringInstance.[start..end]比...更具可读性String.sub.这是我想出的:


    let chop (input : string) len = 
        seq { for start in 0 .. len .. input.Length - 1
            do yield input.[start..start + len - 1] }
        |> Seq.toArray
Run Code Online (Sandbox Code Playgroud)

或者您可以使用:


    let chop (input : string) len = 
        Array.init (input.Length / len) (fun index ->
            let start = index * len
            input.[start..start + len - 1])
Run Code Online (Sandbox Code Playgroud)