有一个简短的方法吗?

0 c#

 public static string RatingCalculator(int input)
{
    if (input < 10)
    {
        return string.Empty;
    }
    if (input > 10 && input < 20)
    {
        return "<img src=\"/images/star.png\" alt=\"*\" /><img src=\"/images/star_empty.png\" alt=\"-\" /><img src=\"/images/star_empty.png\" alt=\"-\" /><img src=\"/images/star_empty.png\" alt=\"-\" /><img src=\"/images/star_empty.png\" alt=\"-\" />";
    }
    if (input > 21 && input < 40)
    {
        return "<img src=\"/images/star.png\" alt=\"*\" /><img src=\"/images/star.png\" alt=\"*\" /><img src=\"/images/star_empty.png\" alt=\"-\" /><img src=\"/images/star_empty.png\" alt=\"-\" /><img src=\"/images/star_empty.png\" alt=\"-\" />";
    }
    if (input > 41 && input < 70)
    {
        return "<img src=\"/images/star.png\" alt=\"*\" /><img src=\"/images/star.png\" alt=\"*\" /><img src=\"/images/star.png\" alt=\"*\" /><img src=\"/images/star_empty.png\" alt=\"-\" /><img src=\"/images/star_empty.png\" alt=\"-\" />";
    }
    if (input > 11 && input < 120)
    {
        return "<img src=\"/images/star.png\" alt=\"*\" /><img src=\"/images/star.png\" alt=\"*\" /><img src=\"/images/star.png\" alt=\"*\" /><img src=\"/images/star.png\" alt=\"*\" /><img src=\"/images/star_empty.png\" alt=\"-\" />";
    }
    else
    {
        return "<img src=\"/images/star.png\" alt=\"*\" /><img src=\"/images/star.png\" alt=\"*\" /><img src=\"/images/star.png\" alt=\"*\" /><img src=\"/images/star.png\" alt=\"*\" />";
    }
}
Run Code Online (Sandbox Code Playgroud)

Eoi*_*ell 11

查看常见部分并尝试提取它们.

您的"全星"图像标记永远不会更改"空星"的图像标记永远不会更改,因此您可以将这两者的可读性提取到变量中.

同样适用于格式化程序字符串,总会有"5个连续的星型"

怎么样

string fs = @"<img src=\"/images/star.png\" alt=\"*\" />"; //Full Star
string es = @"<img src=\"/images/star_empty.png\" alt=\"-\" />"; //Empty Star

string format = @"{0}{1}{2}{3}{4}";

if(input < 10)
   return string.Empty;
else if(input < 20)
   return string.Format(format, fs, es, es, es, es);
else if(input < 40)
   return string.Format(format, fs, fs, es, es, es);
else if(input < 70)
   return string.Format(format, fs, fs, fs, es, es);
else if(input < 120)
   return string.Format(format, fs, fs, fs, fs, es);
else 
   return string.Format(format, fs, fs, fs, fs, fs);
Run Code Online (Sandbox Code Playgroud)

或者,您可以使用字符串构建器

string fs = @"<img src=\"/images/star.png\" alt=\"*\" />"; //Full Star
string es = @"<img src=\"/images/star_empty.png\" alt=\"-\" />"; //Empty Star

StringBuilder sb = new StringBuilder(fs);  
//No need for `sb.Append (input > 10 ? fs : es);` as we'll test "input < 10" in the return statement.
sb.Append (input > 20 ? fs : es);
sb.Append (input > 40 ? fs : es);
sb.Append (input > 70 ? fs : es);
sb.Append (input > 120 ? fs : es);

return (input < 10) ? string.Empty : sb.ToString();
Run Code Online (Sandbox Code Playgroud)