【问题标题】:construct a string with the index the composition of an integer array构造一个以字符串为索引的整数数组的组成
【发布时间】:2014-03-04 10:03:12
【问题描述】:

我有索引字符串的代码。我应该在代码中添加什么,以便字符串的结果成为。

如果字符串 "hello" 到 "loleh"

这是代码:

public void IndexesString() 
{ 
    string karakter = "hello";
    int [] IP = {4,5,3,2,1};
    string Result;
    txtResult.Text = Result; // Result = "loleh"
}

【问题讨论】:

  • 你总是期待“hello”变成“loleh”,还是需要随机的?
  • 在给定这些索引的情况下,您是如何从字符串“hello”到“loleh”的?如果你能描述你所采取的步骤,你也可以编写代码。
  • @MaxMommersteeg 索引在IP 数组中给出,偏移量为+1。
  • @Max 我只是举例说明,如果使用变量 IP 上的现有索引编译字符串
  • @Dirk 是的,我明白我的意思,看看第一个答案。

标签: c# string indexing


【解决方案1】:

你可以使用foreach循环和StringBuilder(尤其是长字符串)

var stringBuilder = new StringBuilder();

foreach(var i in IP)
{
    stringBuilder.Append(karakter[i-1]);
}

Result = stringBuilder.ToString();

【讨论】:

  • ToString() 电话在这里是多余的。
  • @Dennis 是的,谢谢 :) 我已经从以前的版本中复制了它,我在字符串中使用 +=
【解决方案2】:
string str = "hello";

string result = new string(new[] { str[3], str[4], str[2], str[1], str[0], });

更一般地,将索引34 等替换为ip[n] 或类似名称。当然可以循环完成。

或者这个呢:

string str = "hello";

int[] ip = { 3, 4, 2, 1, 0, };

var result = new string(Array.ConvertAll(ip, idx => str[idx]));

.NET 2 的旧 ConvertAll 方法类似于 Linq 的 Select 方法,但使用数组。

【讨论】:

    【解决方案3】:

    可能的Linq解决方案

      string karakter = "hello";
      int[] IP = { 4, 5, 3, 2, 1 };
    
      String result = new String(IP.Select(i => karakter[i - 1]).ToArray());
    

    【讨论】:

    • 这与我的答案的最后一部分相同,但是对于Array.ConvertAll,从一开始就知道我们需要一个特定长度的列表/数组,而 Linq 的 ToArray 不能我知道。但是,如果您更喜欢始终坚持使用 Linq 方法(为了代码的清晰性),那么您的代码真的很好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-25
    • 1970-01-01
    • 1970-01-01
    • 2012-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多