将印度货币符号转换

4
我有一段简单的C#控制台代码,它可以将HTML名称转换为它们对应的符号。
例如:€ - 这是欧元的HTML名称,€ - 这是欧元的十进制代码;
我的代码将把这个名称转换成欧元符号 -> €。
但是当我将₹转换成₹时,它无法正常工作。
我的控制台应用程序代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Text.RegularExpressions;

namespace Multiple_Replace
{
    class Program
    {
        static void Main(string[] args)
        {
        var input = " ₹ 5000 €";
        var replacements = new Dictionary<string, string> { { "₹", "&#8377;" }, {"&euro;", "&#8364;"} };
        var output = replacements.Aggregate(input, (current, replacement) => current.Replace(replacement.Key, replacement.Value));
        Console.WriteLine(output);
        Console.ReadLine();
        }
    }
}

请帮我一下。


1
请问您能否定义一下“不起作用”是什么意思?如果您的输入已经包含了我们的货币符号,那您想要替换什么呢? - sujith karivelil
字典枚举中存在语法错误: { {"₹", "&#8377;"}, {"&euro;"}, "&#8364" }; - ib11
@ib11:我已经更新了我的问题,并附上了完整的代码,请查看。 - Sanjiv
我想使用这段代码显示 ₹ 符号。 - Sanjiv
1
@Sanjiv 符号已经在输入中了吗? - H77
显示剩余7条评论
2个回答

1

首先,我认为这里有一个更基本的问题。

你的输入字符串并不包含字符串"&euro;"

如果你将字典更改为以下内容:

var replacements = new Dictionary<string, string> { { "₹", "&#8377;" }, { "€", "&#8364;" } };

然后你会发现输出实际上是:

&#8377; 5000 &#8364;

所以你看到的不是你想看到的,因为虽然 "₹" 是字符串的一部分,但 "&euro;" 不是。
说到这一点,阅读相关内容后,似乎并非所有浏览器都支持卢比符号的 html 实体代码。
如果您想要实现此目的,则可以使用以下代码,使用 Unicode 代码即可:
using System;
using System.Collections.Generic;
using System.Linq;

namespace Multiple_Replace
{
    class Program
    {
        static void Main(string[] args)
        {
            var input = " ₹ 5000 €";
            var replacements = new Dictionary<string, string> { { "₹", "\u20B9" }, { "€", "\u20AC" } };
            var output = replacements.Aggregate(input, (current, replacement) => current.Replace(replacement.Key, replacement.Value));
            Console.WriteLine(output);
            Console.ReadLine();
        }
    }
}

另外,请查看这个问题和被接受的答案,我认为这对你有启示:

在网站上显示印度货币符号

最后,如果您想在html中正确表示该符号,可以使用此代码:

<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css">

<i class="fa fa-inr"></i>

HTH


0
你尝试过设置控制台输出编码吗?
例如:
Console.OutputEncoding = System.Text.Encoding.UTF8;

实际上,我已经为其他符号(!,@,#,$,%,^,&,*等)实现了我的代码,它们都可以正常工作,唯一的问题是 ₹ 符号。如果可能,请在上述代码中提供一些解决方案。 - Sanjiv
我的输出是:-> &#8377 5000。它打印出了 HTML 代码(即:&#8377),而不是 ₹ 符号。 - Sanjiv
1
在您的替换字典中,您替换的是"€"而不是€。为什么会这样? - H77
因为 € 有 &euro 的 HTML 名称,但对于 ₹ 我没有找到任何 HTML 名称。所以我直接使用了 ₹ 符号。 - Sanjiv
1
字符串.replace不能替换HTML名称。因此,上面的代码将输出输入中的欧元符号,而不是进行任何替换。 - H77

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接