使用 string.Format() 连接阿拉伯语和英语字符串
Concat arabic and english string with string.Format()
连接两个字符串时遇到一些问题。
return string.Format("{0}{1}{2}",
IdWithSubType,
ExtraInfo.Any(info => info.InfoType == UniExtraInfoType.Alias)
? string.Format(" ({0})", string.Join(",", ExtraInfo.First(info => info.InfoType == UniExtraInfoType.Alias).Info))
: "",
Context != null
? string.Format(" ({0})", Context.IdWithSubType)
: "");
IdWithSubType, extrainfo 和 context 有拉丁文或基里尔文符号是可以的,但是 IdWithSubType 可以是阿拉伯文,用它连接是错误的。
例如 100252575)طائرات هليكوبت@vk.com)
阿拉伯语和其他符号混合在一起,但我需要像 "here arabic string" (100252575@vk.com 这样的东西。如果这个问题能用 String.Format 解决就好了。希望得到你的帮助。谢谢你
那里可能没有出现编码问题,只是 RTL(从右到左)字符串如何按照 LTR(从左到右)字符串的一部分进行排列。
双向格式化中常用的2个字符来标记LTR和RTL部分,分配为0x200e
(LTR) & 0x200f
(RTL)。在这种情况下,使用 0x200e
标记 RTL 部分(阿拉伯语)的结尾和 LTR 部分的开始:
string leftToRight = ((char)0x200E).ToString();
// using string.Format
return string.Format("{0}{1}{2}{3}",
IdWithSubType,
leftToRight,
ExtraInfo.Any(info => info.InfoType == UniExtraInfoType.Alias)
? string.Format(" ({0})", string.Join(",", ExtraInfo.First(info => info.InfoType == UniExtraInfoType.Alias).Info))
: "",
Context != null
? string.Format(" ({0})", Context.IdWithSubType)
: "");,
// alternative: using string.Join
return string.Join(leftToRight, IdWithSubType,
ExtraInfo.Any(info => info.InfoType == UniExtraInfoType.Alias)
? string.Format(" ({0})", string.Join(",", ExtraInfo.First(info => info.InfoType == UniExtraInfoType.Alias).Info))
: "",
Context != null
? string.Format(" ({0})", Context.IdWithSubType)
: "");,
类似问题:
Problem creating correct path concatenating left to right with right to left sections
连接两个字符串时遇到一些问题。
return string.Format("{0}{1}{2}",
IdWithSubType,
ExtraInfo.Any(info => info.InfoType == UniExtraInfoType.Alias)
? string.Format(" ({0})", string.Join(",", ExtraInfo.First(info => info.InfoType == UniExtraInfoType.Alias).Info))
: "",
Context != null
? string.Format(" ({0})", Context.IdWithSubType)
: "");
IdWithSubType, extrainfo 和 context 有拉丁文或基里尔文符号是可以的,但是 IdWithSubType 可以是阿拉伯文,用它连接是错误的。 例如 100252575)طائرات هليكوبت@vk.com) 阿拉伯语和其他符号混合在一起,但我需要像 "here arabic string" (100252575@vk.com 这样的东西。如果这个问题能用 String.Format 解决就好了。希望得到你的帮助。谢谢你
那里可能没有出现编码问题,只是 RTL(从右到左)字符串如何按照 LTR(从左到右)字符串的一部分进行排列。
双向格式化中常用的2个字符来标记LTR和RTL部分,分配为0x200e
(LTR) & 0x200f
(RTL)。在这种情况下,使用 0x200e
标记 RTL 部分(阿拉伯语)的结尾和 LTR 部分的开始:
string leftToRight = ((char)0x200E).ToString();
// using string.Format
return string.Format("{0}{1}{2}{3}",
IdWithSubType,
leftToRight,
ExtraInfo.Any(info => info.InfoType == UniExtraInfoType.Alias)
? string.Format(" ({0})", string.Join(",", ExtraInfo.First(info => info.InfoType == UniExtraInfoType.Alias).Info))
: "",
Context != null
? string.Format(" ({0})", Context.IdWithSubType)
: "");,
// alternative: using string.Join
return string.Join(leftToRight, IdWithSubType,
ExtraInfo.Any(info => info.InfoType == UniExtraInfoType.Alias)
? string.Format(" ({0})", string.Join(",", ExtraInfo.First(info => info.InfoType == UniExtraInfoType.Alias).Info))
: "",
Context != null
? string.Format(" ({0})", Context.IdWithSubType)
: "");,
类似问题:
Problem creating correct path concatenating left to right with right to left sections