显示星星数而不是数字 [英] Show number of stars instead of the number

查看:111
本文介绍了显示星星数而不是数字的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在建立一个网站,人们可以在这里对电影进行评论,当他们进行评论时,他们需要对电影进行评分,评分等级为1到5.

I am making i site where people can make reviews of movies and when they make the review they need to put a rating to a movie, in a number of 1 to 5.

但是当它打印在另一页上时,我想打印出以数字3为例的星.

But when it print out on another page I want to print out stars insted of the number 3 for exemple.

现在我得到了以下代码:

For now I got this code:

StringBuilder movielistSB = new StringBuilder();
            foreach (var moviereview in movielistSB)
            {
                filmanmeldelserlisteSB.AppendFormat(
                    "<div id='moviereview'><artitcle><h3>{0}</h3>" + 
                    "<table><tr><td>ID:</td><td>{1}</td></tr>" + 
                    "<tr><td>Anmeldelse:</td><td>{2}</td></tr>" + 
                    "<tr><td>Rating:</td><td>{3}</td></tr></table></article></div>",
                    (string)moviereview.Element("title"),
                    (string)moviereview.Element("id"),
                    (string)moviereview.Element("review"),
                    (string)moviereview.Element("rating")
                );

对于(string)moviereview.Element("rating"),我想在用户给电影定级为3时打印出3星的示例.

And for the (string)moviereview.Element("rating") I want to print out for exempel 3 stars when a user has given the movie a rating of 3.

我试图运行一个for循环,但是我不知道如何使它工作.我曾尝试向Google寻找解决方案,但无论如何我都无法使用它.

I tried to run a for loop, but I could not figur out how to get that to work. And I've tried to Google for a solution, but anyhow I can't get it to work.

有什么想法吗?

现在我明白了:

String star = @"<img src=""../images/star.png""/>";

    if (moviereviewlist.Count() > 0)
    {
        StringBuilder moviereviewlistSB = new StringBuilder();
        foreach (var moviereview in moviereviewlist)
        {
            filmanmeldelserlisteSB.AppendFormat(
                "<div id='moviereview'><artitcle><h3>{0}</h3>" + 
                "<table><tr><td>ID:</td><td>{1}</td></tr>" + 
                "<tr><td>Review:</td><td>{2}</td></tr>" + 
                "<tr><td>Rating:</td><td>{3}</td></tr></table></article></div>",
                (string)moviereview.Element("tittel"),
                (string)moviereview.Element("id"),
                (string)moviereview.Element("anmeldelse"),
                star.RepeatString((int)moviereview.Element("rating"))
            );

还有这个

    public static class StringExtensions
{
    public static string RepeatString(this string input, int count)
    {
        if (!string.IsNullOrEmpty(input))
        {
            return string.Empty;
        }

        StringBuilder builder = new StringBuilder(input.Length * count);
        for(int i = 0; i < count; ++i)
        {
            builder.Append(input);
        }
        return builder.ToString();
    }
}

我不得不将`(int)filmanmeldelse.Element("rating")'解析为一个int.但是由于某种原因,我无法在该网站上获得图片.它唯一的空白,我尝试了不同的方法,但不会为该站点带来价值.

I had to parse the `(int)filmanmeldelse.Element("rating")' to an int. But for somehow I can't get a image on the site. Its only blank and I have tried different ways, but It will not get a value to the site.

推荐答案

尝试一下:

StringBuilder movielistSB = new StringBuilder();
foreach (var moviereview in movielistSB)
{
    filmanmeldelserlisteSB.AppendFormat(
            "<div id='moviereview'><artitcle><h3>{0}</h3>" + 
            "<table><tr><td>ID:</td><td>{1}</td></tr>" + 
            "<tr><td>Anmeldelse:</td><td>{2}</td></tr>" + 
            "<tr><td>Rating:</td><td>{3}</td></tr></table></article></div>",
            (string)moviereview.Element("title"),
            (string)moviereview.Element("id"),
            (string)moviereview.Element("review"),
            new String('*', moviereview.Element("rating"))
        );

之所以可行,是因为String有一个构造器,该构造器需要重复一个Character,并重复多次.

This works, because String has a constructor that takes a Character to repeat, and a number of times to repeat it.

代码如下:

new String('X', 5);

将导致字符串"XXXXX"(连续五个X)

would result in the string "XXXXX" (five X's in a row)

编辑:发帖人询问是否可以使用类似的东西来插入图像链接.

EDIT Poster asks if something similar can be used to insert Image-Links.

回复:否.此String方法重复单个字符,而不是文本块.
如果您想重复一段文本,则需要类似以下内容的

Reply: No. This String method repeats a single character, not a block of text.
If you want to repeat a block of text, you'll want something like:

String starImage = @"<img src=""StarImage.jpg""/>";

filmanmeldelserlisteSB.AppendFormat(
            "<div id='moviereview'><artitcle><h3>{0}</h3>" + 
            "<table><tr><td>ID:</td><td>{1}</td></tr>" + 
            "<tr><td>Anmeldelse:</td><td>{2}</td></tr>" + 
            "<tr><td>Rating:</td><td>{3}</td></tr></table></article></div>",
            (string)moviereview.Element("title"),
            (string)moviereview.Element("id"),
            (string)moviereview.Element("review"),
            starImage.RepeatString(movieReview.Element("rating"))
        );

但是您必须编写自己的RepeatString方法.
可以在

But you'll have to write your own RepeatString method.
A guide to doing that can be found on this question

编辑#2

写扩展方法并不难.
我将此类放在您项目的名称空间中.

Writing an extension method is not hard.
I would put this class somewhere in your project's namespace.

public static class StringExtensions
{
    public static string RepeatString(this string input, int count)
    {
        if (string.IsNullOrEmpty(input))
        {
            return string.Empty;
        }

        StringBuilder builder = new StringBuilder(input.Length * count);
        for(int i = 0; i < count; ++i)
        {
            builder.Append(input);
        }
        return builder.ToString();
    }
}

Geesh ...您真的无法调试,可以吗?

此代码中还有一个:

public static string RepeatString(this string input, int count)
{
    if (!string.IsNullOrEmpty(input))  // <-- Extra !
    {
        return string.Empty;
    }

这是一个非常简单的声明!
如果字符串为Null或Empty,则返回一个空字符串"

但是您将其倒退,因此它有效地表示:
如果字符串中包含文本,则返回空字符串"..

那没有道理.

Its a pretty simple statement!
"If the string is Null or Empty, return an Empty string"

But you have it backwards, so it effectively says:
"If the string has text in it, return an Empty string".

That makes no sense.

这篇关于显示星星数而不是数字的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆