5

我正在寻找执行以下渲染的函数:

f("2") = 2²
f("15") = 2¹⁵

我试过f(s) = "2\^($s)"了,但这似乎不是一个有效的指数,因为我不能 TAB。

4

2 回答 2

7

您可以尝试例如:

julia> function f(s::AbstractString)
           codes = Dict(collect("1234567890") .=> collect("¹²³⁴⁵⁶⁷⁸⁹⁰"))
           return "2" * map(c -> codes[c], s)
       end
f (generic function with 1 method)

julia> f("2")
"2²"

julia> f("15")
"2¹⁵"

(我没有优化它的速度,但我希望这足够快,并且易于阅读代码)

于 2021-12-22T16:07:17.993 回答
1

这应该快一点,并使用replace

function exp2text(x) 
  two = '2'
  exponents = ('⁰', '¹', '²', '³', '⁴', '⁵', '⁶', '⁷', '⁸', '⁹') 
  #'⁰':'⁹' does not contain the ranges 
  exp = replace(x,'0':'9' =>i ->exponents[Int(i)-48+1])
  #Int(i)-48+1 returns the number of the character if the character is a number
  return two * exp
end

在这种情况下,我使用了replace可以接受的事实Pair{collection,function}

if char in collection
  replace(char,function(char))
end
于 2021-12-22T20:44:29.530 回答