如何在ArrayList的最后一个元素中排除附加字符

时间:2015-01-17 15:47:15

标签: java c# for-loop arraylist

我正在尝试使用for()循环构建一个字符串来迭代ArrayList的元素。我希望在将ArrayList的每个元素附加到我构建的String之后追加一个昏迷,但是我不想在追加ArrayList的最后一个元素之后追加昏迷。 / p>

这是我到目前为止所尝试的,但在最后一个元素之后仍然会加入昏迷。

public String buildWOEIDQuery(ArrayList searchCriteria)
{
    String query = "http://where.yahooapis.com/v1/places.q('";
    for (int i = 0; i < searchCriteria.Count; i++ )
    {
        if(searchCriteria.)

        query += (String)searchCriteria[0];
        if(i != searchCriteria.Count)
        {
            query += ",";
        }
    }
    query += "')?appid=" + devKey;

    return query;
}

如果例如有3个搜索条件,则查询应该看起来像这样:

http://where.yahooapis.com/v1/places.q('criteria1,criteria2,criteria3')?appid=dj0yJmk9Tm

如果i等于ArrayList的Count,那么是不是使它成为列表的最后一个元素,因此不应该附加昏迷?

3 个答案:

答案 0 :(得分:2)

问题1:您的情况if(i != searchCriteria.Count)永远不会成立,因为如果i等于ArrayList.Count,您的for循环就不会进入。

所以你需要让条件if(i != searchCriteria.Count)跳过最后一项的逗号。

您还可以使用TrimEnd()功能删除最后一个逗号。

试试这个:

query = query.TrimEnd(',');
在循环中

问题2:,您将硬编码值为零,以便始终从ArrayList获取第一个元素

替换它:

query += (String)searchCriteria[0];

有了这个:

query += (String)searchCriteria[i];

建议1:不要使用ArrayList,因为它可以使用Generic List<T>

完整代码:

public String buildWOEIDQuery(List<string> searchCriteria)
{
    String query = "http://where.yahooapis.com/v1/places.q('";
    for (int i = 0; i < searchCriteria.Count; i++ )
    {
       query += searchCriteria[i] + ",";        
    }
    query = query.TrimEnd(',');
    query += "')?appid=" + devKey;

    return query;
}

答案 1 :(得分:1)

检查不起作用的原因是i在循环的最后一次迭代中等于searchCriteria.Count-1。因此,您可以将if检查修改为i != searchCriteria.Count-1

作为替代方案,您可以绕过检查并使用TrimEnd功能在循环后剪掉多余的字符。

var query = "a,b,c,";
query = query.TrimEnd(',');
MessageBox.Show(query);    // a,b,c

答案 2 :(得分:1)

不要使用ArrayList;请改用List<string>或更好IEnumerable<string>。如果您使用string.Join(),您的代码会更优雅。它是根据您的要求量身定制的。完整的解决方案如下:

public string buildWOEIDQuery(IEnumerable<string> searchCriteria)
{
    string query = "http://where.yahooapis.com/v1/places.q('";
    query += string.Join(",", searchCriteria);
    query += "')?appid=" + devKey;

    return query;
}

您可以在SO上查看similar question