我需要提取特殊字符&
之间的值。
string text = "&2&LL&1&likk&3&";
我需要提取值2, 1, 3
并插入List<string>
的相应索引。
该列表包含10个元素:
0 - A
1 - B
2 - C
3 - D
...
9 - J
最后,当我将list元素替换为字符串时,应将其打印为 C LL B likk D 。我该怎么办?
我尝试了如下拆分:但是,它仅使用&符号进行拆分。
string[] xx = text.Split('&');
答案 0 :(得分:1)
尝试一下:
List<string> f = new List<string> ( ) { "A", "B", "C", "D", "E", "F", "G" };
string text = "&2&LL&1&likk&3&";
for ( int i = 0; i < f.Count; i++ )
{
text = text.Replace ( i.ToString ( ), f[ i ] );
}
text=text.Replace ( "&", "" );
Console.WriteLine ( text );
使用“ FOR”遍历列表中的所有值,并用替换值重新分配文本值
已编辑
List<string> f = new List<string> ( ) { "A", "B", "C", "D", "E", "F", "G" };
string text = "&2&LL&1&likk&3&";
for ( int i = 0; i < f.Count; i++ )
{
text = text.Replace ($"&{ i.ToString ( )}&", f[ i ] );
}
Console.WriteLine ( text );
答案 1 :(得分:1)
正则表达式替代(17与'A' - '0'
的区别):
var result = Regex.Replace("&2&LL&1&likk&3&", "&[0-9]&", m => (char)(m.Value[1] + 17) + "");
答案 2 :(得分:0)
嗨,您可以尝试这样的事情
string text = "&2&LL&1&likk&3&";
string[] xx = text.Split('&');
string text2 = "";
string[] abc = { "A","B","C","D","E","F","G","H","I","J" };
for (int i = 0; i < xx.Length; i++)
{
text2 += xx[i];
}
for (int i = 0; i < abc.Length; i++)
{
text2 = text2.Replace(""+i, abc[i]);
}
MessageBox.Show(text2);
答案 3 :(得分:-1)
您应该使用正则表达式来执行此操作,因为正则表达式很有趣!
&\ d&将匹配&符号之间的所有数字。考虑到您的意思是字母和数字应该映射在一起,我们可以采用Henocs的答案来使用正则表达式来获得奖励积分!
List<string> f = new List<string> ( ) { "A", "B", "C", "D", "E", "F", "G" };
string text = "&2&LL&1&likk&3&";
for ( int i = 0; i < f.Count; i++ )
{
text = text.RegexReplace ( text, "&" + i + "&", f[ i ] );
}
Console.WriteLine ( text );
通过创建&(目标数字)&的正则表达式,并将其替换为字符串列表中的字母,我们将替换整个块,而不仅仅是数字。