为了账号安全,请及时绑定邮箱和手机立即绑定

字符串的 char 值更改为 Int

字符串的 char 值更改为 Int

C#
慕斯709654 2022-01-09 10:49:22
我正在处理一个与字符串相关的问题,其中也存在少量数字。我的工作是迭代所有字符,识别这些数字并执行算术运算。最后返回修改后的字符串。但是对于此操作,所有字符都更改为 Int。谢谢string str="Please Change 2015";string str2=String.Join("", str.Select(x=> (x >= '0' && x <= '9') ?'9'-x: x).ToList()); Given Output: 8010810197115101326710497110103101327984Required Output: Please Change 7984
查看完整描述

2 回答

?
收到一只叮咚

TA贡献1821条经验 获得超4个赞

要不就


string str = "Please Change 2015";

string str2 = String.Join("", str.Select(x => char.IsDigit(x) ? (char)(9-(x-'0')+'0') : x).ToList());

输出


Please Change 7984

解释


-'0' // convert it from char to a number 

+'0' // convert it back to a char 

(char) // make sure we output characters again


查看完整回答
反对 回复 2022-01-09
?
慕尼黑的夜晚无繁华

TA贡献1864条经验 获得超6个赞

StringBuilder对我来说,这听起来像是一份工作。附加每个非数字字符,对每个数字字符执行数学运算,最后输出完整字符串。


注意:这假设您不应该修改输入字符串,而是返回一个新字符串。


请参阅我的 repl或下面粘贴的代码。


using System;

using System.Text;

using System.Linq;


class MainClass {

  public static void Main (string[] args) {

    const string testcase = "Please Change 7984";

    const string input = "Please Change 2015";

    var builder = new StringBuilder();


    input.ToList<Char>().ForEach(c => {

        if ('0' <= c && c <= '9')

            builder.Append('9' - c);

        else

            builder.Append(c);

    });


    var output = builder.ToString();

    var success = (testcase == output);


    Console.WriteLine($"output: {output}");

    Console.WriteLine($"success: {success}");

  }

}

输出:


>>> Mono C# compiler version 4.0.4.0

>>> output: Please Change 7984

>>> success: True


查看完整回答
反对 回复 2022-01-09
  • 2 回答
  • 0 关注
  • 134 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信