Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Concat阿拉伯文和英文字符串,带string.Format()_C#_String_Arabic_Latin - Fatal编程技术网

C# Concat阿拉伯文和英文字符串,带string.Format()

C# Concat阿拉伯文和英文字符串,带string.Format(),c#,string,arabic,latin,C#,String,Arabic,Latin,使用concat两个字符串时遇到一些问题 return string.Format("{0}{1}{2}", IdWithSubType, ExtraInfo.Any(info => info.InfoType == UniExtraInfoType.Alias) ? string.Format(" ({0})", string.Join(",", ExtraInfo.First(info => info.In

使用concat两个字符串时遇到一些问题

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可以是阿拉伯语,而concat则是错误的。 e、 g.10025275)طااتهلكتتت@vk.com)
阿拉伯语和其他符号混合在一起,但我需要“这里是阿拉伯语字符串”(100252575@vk.com.如果这个问题已经用String.Format解决了,那就太好了。希望您能提供帮助。谢谢您。

这里可能没有出现编码问题,只是RTL(从右到左)字符串如何作为LTR(从左到右)的一部分遵循排列绳子

双向格式中通常使用2个字符来标记LTR和RTL部分,分配为(LTR)和(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)
            : "");,
演示:

类似问题:


全部是什么编码?.Net字符串是utf-16默认编码整个解决方案utf-8。好的。我完全不知道你在这个问题上想问什么。使用字符串格式是的,使用两种不同的编码将有助于组合编码的两个字符串。字符串输出=string.format(“{0}{1}”,string1,string2);@jdweng您在谈论什么编码?这似乎是常规的rtl/ltr问题,而不是关于编码。。。