2 回答

TA貢獻1821條經驗 獲得超5個贊
要不就
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

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
- 2 回答
- 0 關注
- 156 瀏覽
添加回答
舉報