You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Haskell中如何按指定次数位移单个字符?

Haskell 字符位移函数实现

基础版(无循环位移)

如果仅需要简单的ASCII码数值叠加位移(不处理字母循环),可以用以下实现:

displace :: Char -> Int -> Char
displace d n = chr (ord d + n)

代码说明:

  • ord d 将输入字符转换为对应的ASCII整数值
  • 加上位移次数n得到新的ASCII数值
  • chr 将新的ASCII数值转回字符
  • 示例调用:displace 'b' 3 输出 'e'

进阶版(支持字母循环位移)

如果需要实现字母的循环位移(例如'z'位移1得到'a','A'位移-1得到'Z'),可以利用ASCII码范围判断和模运算实现,仅使用你指定的基础函数:

displace :: Char -> Int -> Char
displace d n 
    | ord d >= ord 'a' && ord d <= ord 'z' = chr $ ord 'a' + (ord d - ord 'a' + n) `mod` 26
    | ord d >= ord 'A' && ord d <= ord 'Z' = chr $ ord 'A' + (ord d - ord 'A' + n) `mod` 26
    | otherwise = d

代码说明:

  • 通过&&判断字符是否为小写/大写字母
  • 计算字母在对应字母表中的相对位置,加上位移后取模26实现循环
  • 非字母字符保持不变
  • 示例调用:displace 'z' 1 输出 'a',displace 'B' -3 输出 'Y'

内容的提问来源于stack exchange,提问作者Feuergeist

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 06:44:58