我有string code= "\0\u0001\0\0\0????\u0001\0\0\0\0\0\0\0\u000f\u0001\0\0\0\u001f\u0001\\ABC01\0\0\0\u001f\0\0\0\u0002\DEF\01\0\0\0\u001f\0\0\0\u0003\\\GHI01\0\0\0\u001f\0\0\0"
我需要在u0001和u0002以及u0002和u0003等之间检索数据。
输出为:
ABC,DEF,GHI等。
我是如何努力实现它的:
code.Substring((code.IndexOf("\u000" + i) + ("\u000" + i).Length), code.IndexOf("\u000" + (i + 1)) - code.IndexOf("\u000" + i) - ("\u000" + i).Length));
这会导致编译错误:
无法识别的转义序列。
我已尝试code.IndexOf("\u0001")
,但这不起作用code.IndexOf("\u000"+i)
。
如何解决?
编辑:你们中的许多人似乎都错了,所以这里是完整的代码:
private static List RetriveMethod()
{
input="\u0001\0\u0005\0\0\0\u0001\0\0\0\tMyMethod1\u0001\u001cfunction MyMethod1("there cud be another function by name function here" ) {\n\t\n\n}\0\0\0\0\u0002\0\0\0\tMyMethod2\u0001?\u0001function MyMethod2( ) { }\0\0\0\0\u0003\0\0\0\tMyMethod3\u0001Ofunction MyMethod3( )
List<string> ExtactedMethods = new List<string>();
for (int i = 0; i <= 3; i++)
{
ExtactedMethods.Add(code.Substring((code.IndexOf("\u000" + i) + ("\u000"
+ i).Length), code.IndexOf("\u000" + (i + 1)) -
code.IndexOf("\u000" + i) - ("\u000" + i).Length));
}
return ExtactedMethods;
}
答案 0 :(得分:2)
\u----
表示Unicode字符(因此前缀为u
)。 "\u000"
是无效的Unicode字符,会导致编译错误。
如果您希望\u
不被视为Unicode字符,则转义为\
字符
"\\u"
@Immersive建议修复源字符串
中的\u
string code= @"\0\u0001\...."
答案 1 :(得分:0)
注意:code.IndexOf(“\ u000”+ i)不起作用,因为你无法将整数转换为字符串,而IndexOf所做的是找到字符串中该字符的数字位置,而应该尝试code.IndexOf(“\ u000”)+ i你在哪里这是向位置添加值的正确方法(IndexOf返回的值),如果这是你的目标
您不能使用反斜杠\,因为它是一个转义序列字符\ n \ r \ T,如果要应用它,你必须添加两个\\其中IDE会解释,首先是转义序列和第二个要读的字符
无论如何,我创建了这个方法来提取文本字符串的大写字母
public List<string> GetUpperLetters(string input)
{
List<string> result = new List<string>();
int index_0 = 0;
string accum = string.Empty;
//Convert string input to char collection
//and walk it one by one
foreach (char c in input.ToCharArray())
{
if(char.IsLetter(c) && char.IsUpper(c))
{
accum += c;
index_0++;
if(index_0 == 3)
{
index_0 = 0;
result.Add(accum);
accum = string.Empty;
}
}
}
return result;
}
,其中
GetUpperLetters(code)[索引从零到n]
string code= "\0\u0001\0\0\0????\u0001\0\0\0\0\0\0\0\u000f\u0001\0\0\0\u001f\u0001\\ABC01\0\0\0\u001f\0\0\0\u0002\DEF\01\0\0\0\u001f\0\0\0\u0003\\\GHI01\0\0\0\u001f\0\0\0";
GetUpperLetters(code)[0] returns ABC
GetUpperLetters(code)[1] returns DEF
GetUpperLetters(code)[2] returns GHI
答案 2 :(得分:0)
非常感谢大家的建议答案。 @Immersive的那个人工作了! 要做的更改是字符串代码= @&#34; \ 0 \ u0001 \ 0 \ 0 \ 0 ???? \ u0001 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ u000f \ u0001 \ 0 \ 0 \ 0 \ u001f \ U0001 \ ABC01 \ 0 \ 0 \ 0 \ u001f \ 0 \ 0 \ 0 \ U0002 \ DEF \ 01 \ 0 \ 0 \ 0 \ u001f \ 0 \ 0 \ 0 \ U0003 \\ GHI01 \ 0 \ 0 \ 0 \ u001f \ 0 \ 0 \ 0&#34; 和
code.Substring((code.IndexOf(@&#34; \ u000&#34; + i)+(@&#34; \ u000&#34; + i).Length),code.IndexOf(@& #34; \ u000&#34; +(i + 1)) - code.IndexOf(@&#34; \ u000&#34; + i) - (@&#34; \ u000&#34; + i).Length ));