C#字符串.Xamarin从右到左语言格式


string s1 = "s1";
string s2 = "s2";
string s3 = string.Format("{0} - {1}", s1, s2);

我希望我的字符串s3是英语(LTR语言(中的s1 - s2,但阿拉伯语(RTL语言(中是s2 - s1

我在Xamarin做这件事,我试过string s3 = string.Format(new CultureInfo("ar-AR"),"{0} - {1}", s1, s2);但无济于事。

有什么可以做的吗?

正如我在上面的评论中所说,我不认为字符串有某种方法或标志。采用参数并根据需要反转参数的格式。但是,也许在一个简单的情况下,您可以创建自己的字符串扩展来处理您的情况。

例如,将此代码放入静态类中

public static string BidiFormat(string s, params object[] values)
{
IEnumerable<object> data = values;
if (CultureInfo.CurrentCulture.TextInfo.IsRightToLeft)
data = values.Reverse();
return string.Format(s, data.ToArray());
}

现在你应该可以写了

CultureInfo ci = new CultureInfo("ar-AR");
CultureInfo.CurrentCulture = ci;
string s1 = "s1";
string s2 = "s2";
string fmt = "{0} - {1}";
string s3 = fmt.BidiFormat(s1, s2);

最新更新