我正在尝试使用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>
<% } %>
答案 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);
}
我希望这会对你有所帮助。