2016-10-20 3 views
0

文字列を作成し、文字列の正しい位置に値(0または1のラジオ・チェック・ボックス)を設定しようとしています。それは文字列を構築し、配列の位置に応じて値を設定しています。指定されたID位置から値を設定する必要があります。 ID位置がaccessID文字列の正しい位置に値を設定します

Response.Write(perm + " - " + Request.Form[perm] + "<br />"); 

int型に設定されている。この書き込み出力は次のようになります。

access_1 - 0 
access_30 - 0 
access_6 - 1 
access_34 - 0 
access_31 - 0 
access_37 - 0 
access_2 - 0 
access_23 - 0 
access_28 - 0 
access_35 - 0 
access_36 - 0 

そして

Response.Write(inputPerms + "<br>"); 

ライトの出力は以下となります。

0#0#1#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0# 

access_6は値を持っています私がチェックするテーブルでは1に設定されています3行目のラジオ入力を編集して、文字列の3番目の位置に設定しました。この順序で動作し、私はアクセスIDの位置に従って文字列に設定しようとしています。したがって、access_6は正しい位置に1を設定する必要があります。この場合は6番目の文字列の正しい位置に値を設定する必要があります。 (access_6)6位:出力文字列は、この代わりにする必要があります -

0#0#0#0#0#1#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0# 

希望これは、任意の助けに感謝明らかです。ここでは、コードは次のようになります。

if (Request.Form["updatePerm"] != null && Request.QueryString["action"]=="update") 
{ 
    foreach (string perm in Request.Form) 
    { 
     string input = perm.Substring(0, perm.IndexOf("_") + 1); 

     if (input == "access_") 
     { 

      string accessRef = perm.Replace("access_", ""); 
      int accessID = Convert.ToInt32(accessRef) + 1; 

      Response.Write(perm + " - " + Request.Form[perm] + "<br />"); 

      string chkInputs = Request.Form[perm]; 
      inputPerms += !string.IsNullOrWhiteSpace(chkInputs) ? chkInputs + "#" : ""; 

     } 
    } 

    Response.Write(inputPerms + "<br>"); 
} 
+0

を[30] ')、設定時にインデクサーとして' accessID'を使います。 'foreach'がいつも順番に値を与えることを知っていれば' List ' – Enfyve

+0

を使用していただきありがとうございます。私はこれをどのように実装できるのか分かりません。 –

答えて

0

この試してみてください:あなたはすでに数や入力を知っているし、それが変更されない場合は、固定長配列( `int型[] accessArr = int型を作成することができます

  string[] input = { 
       "access_1 - 0", 
       "access_30 - 0", 
       "access_6 - 1", 
       "access_34 - 0", 
       "access_31 - 0", 
       "access_37 - 0", 
       "access_2 - 0", 
       "access_23 - 0", 
       "access_28 - 0", 
       "access_35 - 0", 
       "access_36 - 0" 
          }; 
      string inputPerms = ""; 
      foreach (string line in input) 
      { 
       inputPerms += string.Format("#{0}",line.Split(new char[] {'-'}).Skip(1).First().Trim()); 
      } 
      Console.WriteLine(inputPerms); 
      Console.ReadLine(); 
関連する問題