我有一长串字符串,例如:
"njro\x68qgbx"\xe4af\"\\suan"
众所周知,这些可以理解为字符串初始化代码命令,例如:
string com = "njro\x68qgbx\"\\xe4af\\\"\\\\suan";
Console.WriteLine(com);
输出:njrohqgbx"\xe4af"\suan 字符数:22
将 \x68 转换为 h,“”表示值的开始和结束位置,“表示”应该是输出值的一部分,而不是被视为指示符。
但它也可以被视为一个完整的字符串值,其中
string val = @"""njro\x68qgbx\"\\xe4af\\\"\\\\suan""";
Console.WriteLine(val);
输出:“njro\x68qgbx”\xe4af“\suan” 字符数:29
输出整个值。
在 2015 年代码挑战赛的第 8 天,我有超过 1000 个此类字符串。我必须编写一个代码来计算输出字符串的字符数(如果使用该字符串将另一个字符串初始化为代码)并从实际的代码字符数中减去它。
当然,我可以为每种可能的情况编写一堆逻辑(例如,如果 char \ 后跟 \ 总值 = 1)。但我相信必须有一种更简单的方法。
所以:有没有办法使用一个字符串作为另一个字符串的初始化代码文本?这样,我可以将其作为整个字符串初始化一次,然后将其用作初始化文本,然后只计算字符数。我非常感谢您的帮助!
我尝试按行阅读,按字符拆分它们,并为所有情况编写逻辑,但这会变得很长并且容易出错。所以我想找到一种更聪明的方法!
using System.Reflection;
var x = File.ReadAllLines(@"text.txt");
var list = new List<char[]>();
foreach (var y in x)
{
var chararr = y.ToCharArray();
list.Add(chararr);
}
int counter = 0;
foreach (char[] arr in list)
{
int i = 1;
foreach (char k in arr)
{
if (k == '\\' && arr[i-1]=='\\')
counter += 1;
//Write a bunch of Logic to get the count of chars that the compiler would be outputting.
i++;
}
}