希望我可以解釋清楚......。我有一個變數的集合:
我有一個變數的集合。
static string sRunnerSetName, sFH, sR1, sH2, sR2, sH3, sR3, sH4, sR4, sH5, sR5 = ""/span>;
static int iRunnerSetName, iFH, iR1, iH2, iR2, iH3, iR3, iH4, iR4, iH5, iR5 = 0;
每個int變數都持有一個唯一的值,它提供了相應的string變數需要被組合并放入一個連接的字串的順序。因此,iFH持有排序/順序號的位置,以確定字串sFH在串聯后的位置。
我只是被困于如何使用每個int中的值來創建字串的順序?
作為一個例子--
iFH = 2; i1R = 0; i2R = 1;
sFH = "z"/span>; s1R = "x"/span>; s2R = "y"/span>。
希望使用整數變數中的值來創建每個字串的順序/位置,以便上述的串聯結果為"xyz"。
uj5u.com熱心網友回復:
創建一個持有一個字串和一個int的類:
class Item
{
public string Description {get; set; }
public int SortOrder {get; set; }
}
為這些專案創建一個串列(或另一個集合,這更符合你的需要):
List<Item> list = new List< Item>
{
new Item { Description = "Test", SortOrder = 4 },
new Item { Description = "Test2", SortOrder = 3 },
new Item { Description = "sadf", SortOrder = 1 },
new Item { Description = "example", SortOrder = 2 },
new Item { Description = "something", SortOrder = 5 }.
};
你可以使用LINQ來給你的串列排序:
list = list.OrderBy(x => x.SortOrder).ToList()。
然后你可以在控制臺輸出:
Console.WriteLine(string.Join("
"/span>, list.Select(x => x.Description))。
uj5u.com熱心網友回復:
你可以在這里使用陣列;將資料復制到陣列中,然后用索引一作為主排序:
string a = "a"/span>, b = "b"/span>, c = "c"/span>, d = "d"/span>;
int ia = 3, ib = 2, ic = 0, id = 1;
string[] sarr = null;
int[] iarr = null;
try; try
{
//將資料放入向量,我們不能談論變數。
//抽象地,但我們*可以*通過位置來談論向量。
sarr = ArrayPool<string>.Shared.Rent(4)。
iarr = ArrayPool<int>.Shared.Rent(4)。
sarr[0] = a;
sarr[1] = b;
sarr[2] = c;
sarr[3] = d;
iarr[0] = ia;
iarr[1] = ib;
iarr[2] = ic;
iarr[3] = id;
var sb = new StringBuilder()。
Array.Sort(iarr, sarr, 0, 4) 。
for (int i = 0; i < 4; i )
{
sb.Append(sarr[i])。
}
sb.AppendLine()。
Console.WriteLine(sb.ToString())。
}
最終
{
if (sarr is not null) ArrayPool<string>.Shared.Return(sarr)。
if (iarr is not null) ArrayPool<int>.Shared.Return(iarr)。
}
不是超級有效,但它會作業。然而,重新構建問題的框架可能會更好;從你的例子來看:
iFH = 2; i1R = 0; i2R = 1。
sFH = "z"/span>; s1R = "x"/span>; s2R = "y"/span>。
如果我們改為說:
string[] sarr = { "z"/span>, "x"/span>, "y"/span>}。
而現在按位置來談你想要什么標記:
int[] iarr = { 1, 2, 0 };
現在你可以直接使用:
foreach (int I in iarr) {
sb.Append(sarr[i])。
}
uj5u.com熱心網友回復:
一個可能的解決方案:使用一個SortedDictionary<int, string>像這樣:
int iFH = 2,i1R = 0,i2R = 1。
string sFH = "z"/span>, s1R = "x"/span>, s2R = "y"/span>;
var map = new SortedDictionary<int, string>();
map[iFH] = sFH;
map[i1R] = s1R;
map[i2R] = s2R;
var result = string.Join("", map.Values) 。
uj5u.com熱心網友回復:
如果我理解正確,你的意思是將int值作為字串陣列中的順序號。由于int值是int型別的,你可以直接把它們作為值使用。例如,假設你有一個名為stringArray的字串陣列,
stringArray[iFH] = sFH。
對所有的字串進行這樣的處理,你就可以組成一個有序的陣列。為了連接它們,你可以在陣列上迭代,并以如下方式將它們添加到一個單獨的字串中:
String finalString = ""/span>。
for(int i = 0; i < stringArray.Length; i ){
finalString = finalString stringArray[i];
}
console.WriteLine(finalString)。
uj5u.com熱心網友回復:
將問題分成兩部分
對于第1部分,創建一個接受引數的函式
public static string[] StringList(params object[] stringValues) => stringValues. Cast<string>().ToArray();
public static int[] PositionList(params object[] intValues) => intValues. Cast<int>().ToArray();
第二部分
public static string Join(string[] text。int[] positions)。
{
string[] final = new string[text.Length] 。
for (int i = 0; i < text.Length; i )
{
final[position[i]] = text[i];
}
return string.Join(""/span>, final)。
}
然后象這樣運行:
public static string RunExample()
{
string sFH = "z"/span>; string s1R = "x"/span>; string s2R = "y"/span>;
int iFH = 2; int i1R = 0; int i2R = 1;
return Join(StringList(sFH, s1R, s2R), PositionList(iFH, i1R, i2R)) 。
}
整個例子:
public static class Joiner<
{
public static string[] StringList(params object[] stringValues) => stringValues. Cast<string>().ToArray();
public static int[] PositionList(params object[] intValues) => intValues. Cast<int>().ToArray();
public static string Join(string[] text, int[] positions)。
{
string[] final = new string[text.Length] 。
for (int i = 0; i < text.Length; i )
{
final[position[i]] = text[i];
}
return string.Join(""/span>, final)。
}
public static string RunExample()
{
string sFH = "z"/span>; string s1R = "x"/span>; string s2R = "y"/span>;
int iFH = 2; int i1R = 0; int i2R = 1;
return Join(StringList(sFH, s1R, s2R), PositionList(iFH, i1R, i2R)) 。
}
}
你可以添加自己的代碼來處理例外(陣列大小不匹配等)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/316187.html
標籤:
上一篇:在SQL查詢中添加變數
