我想用數字來改變字符,例如:a用1,b用2 ... z用26.因此字符串「hello」將是這樣的:82491513621.第一個問題是:如何做到這一點最簡單的方法,第二:如何用SWITCH語句來做到這一點。我試過了,但是休息之後;它停止。謝謝。如何用C#中的數字來更改字符串中的所有字符?
回答
你需要一個循環,無論你做。一個簡單的開關是不夠的。
string input = "hello";
StringBuilder output = new StringBuilder();
foreach(char c in input)
{
output.Append((c - 'a' + 1));
}
Console.WriteLine(output);
一些解釋:因爲所有的字母都以字母順序關聯的數字ASCII代碼,就意味着,從代表的信函有任何字符,我們可以減去「A」加1得到字母表的數字等級。
如果使用switch語句是一個絕對的要求,你需要寫一個獨立的情況下,一個字符的每個可能值:
string input = "hello";
StringBuilder output = new StringBuilder();
foreach(char c in input)
{
switch(c)
{
case 'a': output.Append("1"); break;
case 'b': output.Append("2"); break;
// etc.
case 'z': output.Append("26"); break;
}
}
Console.WriteLine(output);
以下幾段代碼是基於ASCII表示的字母。
- A由65
- B由值66
- ...等表示的值表示。
從字符數組:
char[] letters = { 'A', 'B', 'C', 'D' };
int[] numbers = new int[4];
for (int i = 0; i < 4; i++)
{
numbers[i] = Convert.ToByte(letters[i], CultureInfo.InvariantCulture) - 64;
}
備用方式:
string myString = "HELLO";
StringBuilder stringAsNumbers = new StringBuilder();
for (int i = 0; i < myString.Length; i++)
{
stringAsNumbers.Append(Convert.ToByte(myString[i], CultureInfo.InvariantCulture) - 64);
}
照顧區分大小寫的。上面的代碼僅適用於大寫字母,因爲65是'A'(而不是'a')的ASCII碼。
不要嘗試switch語句,它看起來很可怕。
編輯: 如果你真的想switch語句,那就是:
string myString = "AAB";
StringBuilder stringAsNumbers = new StringBuilder();
for (int i = 0; i < myString.Length; i++)
{
switch (myString[i])
{
case 'A':
case 'a':
stringAsNumbers.Append("1");
break;
case 'B':
case 'b':
stringAsNumbers.Append("2");
break;
...
}
}
編輯: 得到最終string
爲StringBuilder
,使用stringAsNumbers.ToString();
雖然它是作業,所以'switch'可能是一個要求。 – 2012-01-14 12:38:58
是的,作業是關於開關,它是必需的,但也想要最簡單的方法。 – samuraisxmali 2012-01-14 12:49:40
好!看到更新的答案。 – ken2k 2012-01-14 12:53:15
你可以這樣定義一個函數:
int transform(char ch)
{
}
這可以使用字典來實現:
Dictionary<char, int> map;
map['a'] = 1;
map['b'] = 2;
...
return map[ch];
或使用開關a你提到的:
switch(ch)
{
case 'a': return 1;
case 'b': return 2;
....
}
現在函數已經準備好了,你可以遍歷你的字符串並調用每個字符的變換。
- 1. 如何更改C++ 11中的字符串中的所有字符?
- 2. 如何在C++中更改字符串中的字符
- 3. 更改C中字符串的字體#
- 4. 如何更換所有字符串中的字符在golang
- 5. Javascript - 將字符串中的所有數字更改爲下標
- 6. 字符串中剝離出來的所有字符,留下數
- 7. c#如何修整字符串中的所有非數字字符
- 8. 更改字符串數組中的字符C
- 9. C#將字符串更改爲字符串中的小索引
- 10. 替換字符串中的所有非字母數字字符
- 11. 如何將VSS中的==字符串更改爲eq(字符串)?
- 12. 如何從字符串中提取所有數字(如int)? c#
- 13. 更好的方法來修改字符串的中間字符?
- 14. 替換字符串中的所有子字符串c#
- 15. 打印字符串中的所有字符用C
- 16. 在C#中查找更大字符串中子字符串的所有位置
- 17. 如何檢查字符串中的所有字符是用java
- 18. 如何在C++中將字符串更改爲int數字?
- 19. 替換字符串中的所有中間字符C++
- 20. 如何使用sprintf更改字符串中的數字?
- 21. 如何把字符串中的所有數字字符串「NUM」在Python
- 22. 如何將字符串更改爲C++中的多字符文字?
- 23. C++ SetConsoleTextAttribute更改字符串中的char
- 24. 如何從BASH中的字符串中刪除所有非數字字符?
- 25. 替換字符串中的所有字符不同的字符
- 26. 如何在C#中表示(字符串,字符串[],字符串[])#
- 27. 如何更改.plist中的字符串
- 28. 如何從C#中的字符串中獲取字符串的子字符串?
- 29. C++ - 如何提取字符串中的有效字符串?
- 30. 查找包含字符串數組中子字符串的所有字符串
你可以發佈你的當前代碼嗎? – 2012-01-14 12:36:50
你能顯示你的代碼嗎?在家庭作業中發現錯誤並沒有問題,但是不能提供代碼。 – dasblinkenlight 2012-01-14 12:37:11
你怎麼會變成82491513621?不應該是'8 5 12 12 15'嗎? – Default 2012-01-14 12:57:37