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

PowerShell批量反转阿拉伯文字符串脚本优化求助

批量反转PowerShell数组中的阿拉伯文本脚本优化

阿拉伯文本在PowerShell中会自动反向显示(比如'مرحبا'会显示成'ابحرم'),现有ReverseText函数只能单独反转单个阿拉伯词,没法批量处理$data数组里的所有目标内容。下面是优化后的脚本,实现批量反转数组中所有被单引号包裹的阿拉伯文本,并将结果存入$Newdata:

# 优化后的反转函数,接受明确的文本参数
function ReverseText {
    param([string]$Text)
    return (-join $Text.ToCharArray() | Sort-Object { --$script:i })
}

# 定义阿拉伯字符集,用于匹配
$arabicChars = 'ابتثجحخدذرزسشصضطظعغفقكلمنهوي'
# 构建正则表达式,匹配单引号包裹的阿拉伯文本
$arabicRegex = "'([$arabicChars]+)'"

# 原始考题数据
$data = @(
    "1. The verb for the male singular in Arabic is?"
    "   a) 'تفعل'" 
    "   b) 'تفعلان'"  
    "   c) 'يفعلون'"  
    "   d) 'يفعل'"
    "2. 'تلميذ' is the mufrad form of the word?"
    "   a) 'تلاميذ'"
    "   b) 'تلميذات'"  
    "   c) 'تلميذان'" 
    "   d) 'تلميذين'"
)

# 批量处理每一行,反转所有匹配到的阿拉伯文本
$Newdata = $data | ForEach-Object {
    [regex]::Replace($_, $arabicRegex, {
        # 对每个匹配到的阿拉伯词(捕获组1)执行反转,再用单引号包裹返回
        "'$(ReverseText $args[0].Groups[1].Value)'"
    })
}

# 输出结果并暂停查看
$Newdata
pause

关键优化点说明:

  • 函数改进:把原函数的$Args改为明确的参数$Text,调用更清晰,避免参数传递歧义。
  • 精准匹配:用正则表达式'([$arabicChars]+)'直接定位所有被单引号包裹的阿拉伯文本,比拆分字符串的方式更高效准确。
  • 批量替换:借助[regex]::Replace的脚本块替换功能,遍历每一行的所有匹配项,自动调用反转函数处理后替换原内容,实现批量处理。

运行脚本后,$Newdata中的所有阿拉伯文本都会被正确反转,显示为正常可读的顺序。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 05:27:19