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