簡體   English   中英

數組用另一個數組值替換匹配值。 C#

[英]Array replace matching value with another array value. C#

如何用相應的數組枚舉值字符串替換數組中的項。

string a = "12345"; //Check if exists.
string[] b = a.Select(x => x.ToString()).ToArray();

string c = "54321"; // Replacement values.
string[] d = c.Select(y => y.ToString()).ToArray();

string e = "0A9B8C7D6E5F4G3H2I1"; // String to amend.
string[] f = e.Select(z => z.ToString()).ToArray();

foreach (string num in b)
{
    replace = f.Select(x => x.Replace(b //Current b enumerator, d //enumerator = b current)).ToArray()

 }
// Output Replace = "0A9B8C7D6E1F2G3H4I5";

澄清問題,您想應用替換密碼。

替換密碼只是用不同的字母或符號替換每個字母或符號。 這是 Julius Caesar 使用的經典加密方法。 作為這個想法的變體,您可以將原始字母加密為一組完全不同的符號。

一個簡單的方法是使用 Linq。 它的可讀性不是很強,但它可以完成工作:

var a = "12345"; // original chars
var c = "54321"; // replacement chars
var e = "0A9B8C7D6E5F4G3H2I1"; // source string
var r = String.Concat(e.Select(x=>a.Contains(x)?c[a.IndexOf(x)]:x));

結果字符串 r 將是:

r == "0A9B8C7D6E1F2G3H4I5"

請記住在標題中包含:

using System.Linq; 

以下情況如何:

var a = "12345";
var c = "54321";
var e = "0A9B8C7D6E5F4G3H2I1";

// create a mutable copy of e
var builder = new StringBuilder(e);
for (var i = 0; i < e.Length; ++i) // for each character position in e
{
    // look for that character in a
    var index = a.IndexOf(e[i]);
    // if we found it, replace the character at that position with the
    // corresponding character from c
    if (index >= 0) { builder[i] = c[index]; }
}
var result = builder.ToString(); // 0A9B8C7D6E1F2G3H4I5

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM