使用for循环使用C#迭代数组

时间:2011-10-05 20:44:46

标签: c# arrays for-loop

我正在尝试使用C#迭代一个数组。

数组由字母表中的字母组成。

我在视图中内联,我知道这不是理想的。但是,对于每个字母,我需要将HTML写入文档。

基本上我需要做以下JS - 只是不知道C#语法:

var myArray = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; //I think ToCharArray();
for (var i=0, i < myArray.length, i++)
{
    if (somecondition)
    {
        write some html;
    } 
   else
   {
        write some other html;
    }
}

目前在用户控件中有26个版本。我是一名前端开发人员,这是由后端传递给我的。只是为了维护性而试图找到一种更有效的方法。

<% if (Convert.ToInt32(Model.State.Cities.GetCityCountByAlphabet("A")) == 0) { %>
<span class="no-link">A</span>
<% } else { %>
<a href="#to-A">A</a>
<% } %>

8 个答案:

答案 0 :(得分:13)

其他答案是合理的,但我个人倾向于简单地写

foreach(char c in "ABCDEFGHIJKLMNOPQRSTUVWXYZ")
{ ... }

并跳过索引器,局部变量,等等等等。

更一般地说:如果每次你不知道C#的语法时你的问题解决技术将要在StackOverflow上询问,那么你的工作效率就不会很高。为什么不学习基本的C#?如果你已经理解了JavaScript,那么理解程序代码的基本习惯和语法应该不会太难。类型系统相当不同,但基本控制流程非常相似。

答案 1 :(得分:5)

C#字符串也可以像数组一样使用:

for (int i = 0; i < str.Length; i++) 
    //str[i] is a char

答案 2 :(得分:5)

迭代字符串中字符的最简单方法是使用foreach

foreach (char c in yourString)
{
    // ...
}

这也适用于数组。

如果你只想迭代字母A到Z,你甚至不需要存储包含所有字母的字符串。你可以改用它:

for (char c = 'A'; c <= 'Z'; c++)
{
    // ...
}

答案 3 :(得分:1)

几年前我实际做了类似的事情,所以我提取了我的代码并对其进行了修改,试图根据您展示的内容将其显示为示例:

            <div id="azindex">
            <ul id="index">
            <%
            var myArray = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".ToCharArray();
            var letters = Model.State.Cities.Select(city => city.Name[0]).Distinct(); //assume array setup based on same database values
            var letterArray = myArray.Where(chr => letters.Any(letter => letter == chr));
            foreach (var letter in letters) 
            {
            %>
                <li><a href='#<%= letter %>'><%= letter %></a></li>
            <%
            } 
            %>
           </ul>
        </div>

假设在条件不匹配的情况下使用你想要写出其他html的例子我修改我的代码有点类似于以下无法编译的代码:

for (var i=0; i < myArray.Length; i++)
{
var letter =  myArray[i];
if (letters.Any(p => p == letter)
{
    <span class="no-link">{letter}</span>
} 
else
{
    <a href="#to-{letter}">{letter}</a>
}
}

答案 4 :(得分:0)

访问字符串的第n个字符使用

myArray[i]

将会做

答案 5 :(得分:0)

如果你想要它,它就差不多了:

var myArray = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; //I think ToCharArray();
for (var i=0; i < myArray.Length; i++) {
    char letter = myArray[0];
    if (somecondition) {
        write some html;
    } else {
        write some other html;
    }
}

答案 6 :(得分:0)

var characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
foreach(char ch in characters) 
{
    if (somecondition) 
    {
        Response.Write("some html");
    } 
    else 
    {
        Repsonse.Write("some other html");
    }
}

答案 7 :(得分:0)

您可以使用:

Char c = myArray[i];

或类似的东西:

StringBuilder html = new StringBuilder();
foreach(Char c in myArray)
{
    if (c = something)
        html.Append(somehtml);
    else
        html.Append(otherhtml);
}

我希望这会对你有所帮助。