字符串的char值更改为Int

时间:2018-09-08 05:05:17

标签: c# arrays linq

我正在处理与字符串有关的问题,其中还存在少量数字。我的工作是迭代所有字符,识别这些数字并执行算术运算。最后返回修改后的字符串。但是对于此操作,所有字符都变为Int。

谢谢

string str="Please Change 2015";
string str2=String.Join("", str.Select(x=> (x >= '0' && x <= '9') ?'9'-x: x).ToList()); 

Given Output: 8010810197115101326710497110103101327984
Required Output: Please Change 7984

2 个答案:

答案 0 :(得分:2)

或者只是

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

答案 1 :(得分:1)

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

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

请参见my repl here或下面粘贴的代码。

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