如何获取unicode字符串中任何字符的索引

时间:2014-07-15 15:07:24

标签: c# string unicode utf-8

我有一个字符串变量,它基本上以中文的形式保存相应的英语字的值。

 String temp = "'%1'不能输入步骤'%2'";

但是当我想通过使用IndexOf函数知道其中包含%1的字符串

      if(temp.IndexOf("%1") != -1)
{
}

即使它包含%1,我也没有成功。

因为中国章程或其他任何问题,是否有任何问题。

请告诉我如何在上述情况下获得任何宪章的索引。

2 个答案:

答案 0 :(得分:0)

这是因为%1不等于%1在这种情况下您要做什么,因为解决方法是选择字符串中的符号

 var s = "'%1'不能输入步骤'%2'";
 var firstFragment = s.Substring(1, 2); // this should select you %1

然后再做

if(temp.IndexOf(first) != -1){

}

答案 1 :(得分:0)

评论给出了答案。使用相同的百分比字符,而不是:

"%1"

使用:

"%1"

或者,如果您发现有问题(您的源代码位于"差"代码页,或者您担心代码在包含类似ASCII字符的全角字符时难以阅读),使用方法:

"\uFF051"

甚至:

"\uFF05" + "1"

(串联将由C#编译器完成,在运行时不会进行额外的连接。)


另一种方法可能是 Unicode规范化

temp = temp.Normalize(NormalizationForm.FormKC);

似乎预示着"异国情调"虽然我不确定这种行为是否得到保证,但是请参阅Unicode Character 'FULLWIDTH PERCENT SIGN' (U+FF05)上的Decomposition字段。