如何在C#中使用一个字符串作为代码来初始化另一个字符串?

问题描述 投票:0回答:1

我有一长串字符串,例如:

"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++;
     }
}
c# string variables char initialization
1个回答
0
投票

使用正则表达式

Unescape(String input)
方法,它返回一个字符串,其中任何转义字符都转换为未转义形式。

阅读官方文档这里

© www.soinside.com 2019 - 2024. All rights reserved.