【问题标题】:How can I change each character in a string to a specific symbol using C#?如何使用 C# 将字符串中的每个字符更改为特定符号?
【发布时间】:2020-12-16 01:31:35
【问题描述】:

基本上,我有一个名为 data 的字符串,其中包含用户输入编写的句子。

我希望能够输出确切的句子,但句子中的每个字母都被更改为基于字母的符号。例如,字母 A 将更改为“&”符号(随机示例)。

但是,我不知道如何扫描字符串并将每个字母更改为符号。我不确定采取什么方法以及如何实施。谢谢。

【问题讨论】:

  • @dxiv 类似但不同的问题 - 在这个问题中,OP 希望在每个字符替换上使用替换映射,但链接的重复项仅涉及单个替换。
  • 请问您在出问题之前走了多远?
  • 更好的副本是C# Replace all characters in string with value of character key in dictionary,它显示了通过字典查找重新映射旧字符串中的字符来创建新字符串。同意这是重复的吗?
  • @Dai 对不起,我误读了这个问题。我无法更改重复的目标,因此我撤回了该投票,但我认为之前评论中链接的另一个问题可能符合重复的条件。

标签: c# for-loop


【解决方案1】:

String 值是不可变的,因此您需要使用StringBuilder 逐个字符地创建输出字符串。字符替换映射可以是一个简单的Dictionary<Char,Char> 实例。

像这样:

static String SubstitutionCipher( String input, IReadOnlyDictionary<Char,Char> map )
{
    StringBuilder sb = new StringBuilder( capacity: input.Length );
    
    foreach( Char c in input )
    {
        if( map.TryGetValue( c, out Char replacement ) )
        {
            sb.Append( replacement );
        }
        else
        {
            sb.Append( c );
        }
    }

    return sb.ToString();

}

用法:

static void Main()
{
    String input = Console.ReadLine();

    Dictionary<Char,Char> map = new Dictionary<Char,Char>()
    {
        { 'A', '@' },
        { 'B', 'ß' },
        { 'C', '?' }
    };

    String output = SubstitutionCipher( input, map );

    Console.WriteLine( output ) ;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-07
    • 2019-09-29
    • 2018-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-04
    相关资源
    最近更新 更多