gpt4 book ai didi

javascript - 如何使用 JavaScript 将字符串的波斯语和阿拉伯语数字转换为英语?

转载 作者:可可西里 更新时间:2023-11-01 02:16:48 31 4
gpt4 key购买 nike

如何使用简单的函数将波斯语/阿拉伯语数字转换为英语数字?

arabicNumbers = ["١", "٢", "٣", "٤", "٥", "٦", "٧", "٨", "٩", "٠"]
persianNumbers = ["۱", "۲", "۳", "۴", "۵", "۶", "۷", "۸", "۹", "۰"]

它是相同的架构,但代码页不同。

最佳答案

Oneliner 英语、阿拉伯语和波斯语数字之间所有 6 种可能的翻译。

const e2p = s => s.replace(/\d/g, d => '۰۱۲۳۴۵۶۷۸۹'[d])
const e2a = s => s.replace(/\d/g, d => '٠١٢٣٤٥٦٧٨٩'[d])

const p2e = s => s.replace(/[۰-۹]/g, d => '۰۱۲۳۴۵۶۷۸۹'.indexOf(d))
const a2e = s => s.replace(/[٠-٩]/g, d => '٠١٢٣٤٥٦٧٨٩'.indexOf(d))

const p2a = s => s.replace(/[۰-۹]/g, d => '٠١٢٣٤٥٦٧٨٩'['۰۱۲۳۴۵۶۷۸۹'.indexOf(d)])
const a2p = s => s.replace(/[٠-٩]/g, d => '۰۱۲۳۴۵۶۷۸۹'['٠١٢٣٤٥٦٧٨٩'.indexOf(d)])

e2p("asdf1234") // asdf۱۲۳۴
e2a("asdf1234") // asdf١٢٣٤
p2e("asdf۱۲۳۴") // asdf1234
a2e("asdf١٢٣٤") // asdf1234
p2a("asdf۱۲۳۴") // asdf١٢٣٤
a2p("asdf١٢٣٤") // asdf۱۲۳۴

解释:

  • (s => f(s))(x) 是一个立即执行的 lambda 函数,将等于 f(x)
  • s.replace(pattern, function) 在 s 中查找模式匹配项,对于每个匹配项 m,它将在字符串中用 function(m) 替换 m。
  • /\d/g 是正则表达式,\d 表示英语中的数字,g 表示全局。如果您不指定 g,它将只匹配第一个出现的地方,否则它将匹配所有出现的地方。
  • 在这种情况下,对于字符串中的每个英文数字 d,该数字将被替换为 '01234556789'[d] 因此,3 将被第三个替换该列表中的索引('01234556789')是'3'
  • /[0-9]/g 是波斯数字的等效正则表达式 这次我们不能使用相同的方法,在我们利用 javascript 是动态类型的事实之前d 自动从字符串(正则表达式匹配)转换为数字(数组索引)(您可以在 javascript 中执行 '1234'['1']'1234' 相同[1])
  • 但这一次我们不能这样做,因为 '1234'['1'] 无效。所以我们在这里使用一个技巧并使用 indexOf 这是一个函数,它告诉我们数组中元素的索引(这里是字符串中的一个字符)所以, '01234556789'.indexOf( 3) 会给我们 3 因为 '3' 是字符串 '0123456789'
  • 中的第三个索引

关于javascript - 如何使用 JavaScript 将字符串的波斯语和阿拉伯语数字转换为英语?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31439604/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com