String 如何颠倒阿拉伯语字符串中两个单词的顺序?

String 如何颠倒阿拉伯语字符串中两个单词的顺序?,string,perl,unicode,bidi,String,Perl,Unicode,Bidi,我需要在perl中反转阿拉伯语字符串的文本方向,正如我在本次使用CSS时所做的那样。我是perl的新手,所以我需要一些指导来获得预期的结果 我正在寻找与中所示完全相同的结果。我在这方面用了一个建议 但这段代码实际上颠倒了文本中单词的顺序。如果我对阿拉伯语文本做同样的处理,它将改变其含义 谢谢您的帮助。您应该始终以书写顺序存储文本。文本的方向是您使用的Unicode字符的一个属性,用于读取文本的程序(文本编辑器、web浏览器等)应实现以正确显示文本。如果您正在编写一个显示文本的程序(而不仅仅是生成

我需要在perl中反转阿拉伯语字符串的文本方向,正如我在本次使用CSS时所做的那样。我是perl的新手,所以我需要一些指导来获得预期的结果

我正在寻找与中所示完全相同的结果。我在这方面用了一个建议

但这段代码实际上颠倒了文本中单词的顺序。如果我对阿拉伯语文本做同样的处理,它将改变其含义


谢谢您的帮助。

您应该始终以书写顺序存储文本。文本的方向是您使用的Unicode字符的一个属性,用于读取文本的程序(文本编辑器、web浏览器等)应实现以正确显示文本。如果您正在编写一个显示文本的程序(而不仅仅是生成文本),您会发现它很有用

对于某些从右到左和从左到右的混合语言,BIDI算法可能会出错。在这些情况下,可以将Unicode方向性标记添加到输出中。例如,如果阿拉伯语段落恰好以英语产品名称开头,则可以在开头插入一个,以便正确显示整个段落。在Perl中:

my $RLM = "\x{200F}"; # Unicode RIGHT-TO-LEFT MARK
say "${RLM}Quux ﻢﻧ ﺎﻠﻣﺎﻠﻛ: \"Centre D\'affaires\"";

您好@Saurabh您喜欢这一个,我想OP希望用Perl实现这一点。CSS只是预期结果的一个例子。@Sachlen,你说得对。我需要与PERLI完全相同的结果我不相信我理解你的意图。在我看来,您只想这样拆分:
my($left,$delim,$right)=拆分/(:\s)/,$string;打印$right、$delim、$left,“\n”至少可以产生(对我来说)与我在你的小提琴中看到的相同的输出,除了对齐到相反的边距……或者更习惯地说,
$string=~s/^([^:]+)(:\s+(\X+)$/$3$2$1/;打印“$string\n”我想使用Text::Bidi CPAN模块,但我无法安装它,因为它会给我带来错误。使用此模块是否有解决方法?提前谢谢。@SaurabhSaxena您用什么来显示perl程序的输出?@@Joni。。。我正在使用一个网页上的perl脚本删除这些数据。我需要在与CSS不兼容的界面上显示完全相同的数据。否则这个问题很容易解决。什么是界面,某种GUI?窗户?GTK+?QT?蒂克?如果你有它的手册,搜索“bidi”。我不能告诉你太多,它更多的是一个内部工具。我已经检查了它的手册,它不支持CSS。就像。。。。我可以把数据放进数据库,我不能改变预先设计的用户界面,我必须根据用户界面工作。