c# - c#字符串索引每2个元素
问题描述
我正在尝试制作一个小型解密器,但是有没有一种方法可以对数字上的字符串进行 for 循环,例如“1512120508”,通过 i 索引 2 个字符而不是 0 然后 1 然后 2 等等。例如第一个循环检查索引0 和 1 ("15") 然后下一个循环检查 2 和 3 ("12") 等等。谢谢你。
public string decode(string text)
{
string newText = "";
string transposed = "";
var encryption = new Dictionary<string, string>(){
{"a","01"},{"b","02"},{"c","03"},{"d","04"},{"e","05"},
{"f","06"},{"g","07"},{"h","08"},{"i","09"},{"j","10"},
{"k","11"},{"l","12"},{"m","13"},{"n","14"},{"o","15"},
{"p","16"},{"q","17"},{"r","18"},{"s","19"},{"t","20"},
{"u","21"},{"v","22"},{"w","23"},{"x","24"},{"y","25"},
{"z","26"}
};
for(int i = ; i < text.Length; i)
{
if(encryption.ContainsValue(Convert.ToString(text[i])))
{
// finds key from value
var myKey = encryption.FirstOrDefault(x => x.Value == Convert.ToString(text[i])).Key;
transposed += myKey;
}
}
解决方案
是的,您可以+=2
在 for 循环中使用String.Substring
. 但我会使用 aStringBuilder
并且不使用ContainsValue
+ 字典上的另一个循环,但只有一个:
public static string decode(string text, int length = 2)
{
StringBuilder transposeBuilder = new StringBuilder();
var encryption = new Dictionary<string, string>(){
{"a","01"},{"b","02"},{"c","03"},{"d","04"},{"e","05"},
{"f","06"},{"g","07"},{"h","08"},{"i","09"},{"j","10"},
{"k","11"},{"l","12"},{"m","13"},{"n","14"},{"o","15"},
{"p","16"},{"q","17"},{"r","18"},{"s","19"},{"t","20"},
{"u","21"},{"v","22"},{"w","23"},{"x","24"},{"y","25"},
{"z","26"}
};
for (int i = 0; i < text.Length; i += length)
{
string token = text.Length >= i + length ? text.Substring(i, length) : text.Substring(i);
var keyValue = encryption.FirstOrDefault(kv => kv.Value == token);
if(!keyValue.Equals(default(KeyValuePair<string, string>)))
{
transposeBuilder.Append(keyValue.Key);
}
}
return transposeBuilder.ToString();
}
您应该考虑将值存储在键中,并将键存储在值中,以受益于字典的快速查找性能。然后你可以使用这个代码:
for (int i = 0; i < text.Length; i += length)
{
string token = text.Length >= i + length ? text.Substring(i, length) : text.Substring(i);
if(encryption.TryGetValue(token, out string value))
{
transposeBuilder.Append(value);
}
}
推荐阅读
- google-bigquery - 连接谓词中的表不受支持的子查询
- mysql - 计数最多捐赠者 SQL
- node.js - 为什么我在 Express 上设置 CORS 时出现飞行前错误?
- angular - Angular 7/Ionic 4 - 背景图像 url 路径问题
- angular - 离子无法连接到服务器
- spectral-density - 转换功率谱密度的维度
- html - 将 100vh 高度页面中的元素向上滚动并移出视图
- artifactory - 是否可以自动设置 Artifactory 属性?
- spring-boot - 在 SpringBoot 中使用 Jaeger 将请求标头转发到下一个微服务
- powershell - Powershell 使用用户凭据安全登录