2014-10-06 66 views
0

你好,我正在尋找一種很好的方法來將字符串中的單個字符更改爲它的前一個字符。我的意思是如果我有這個字符串=「abcd」我想把'd'字符改爲'c'?如何將字符更改爲之前的字符(按字母順序)?如何使用c#在字符串中將字符更改爲前一個字符(按字母順序)?

我想在這裏使用的方法:

int StringSize=0; 
string s=" "; 
s = Console.ReadLine(); 
StringSize = s.Length; 
s.Replace(s[StringSize-1],the previous char); 

我想改變個char [stringsize的-1]到它的前一個字符。

我試圖做到這一點取決於字符的ASCII碼,但我沒有找到一種方法來將表單字符轉換爲ASCII。

+2

字符串是不可變的。重新分配給's'。 – 2014-10-06 16:46:19

+0

您將'char'轉換爲'int'來獲取其數值。 – jrummell 2014-10-06 16:46:42

回答

2

char已經是ASCII碼了,但是要做數學運算,你需要一個數字。

所以:

  1. 演員到int
  2. 做你的數學(減1)
  3. 轉換回char

    char newChar = (char)((int)oldChar - 1); 
    

或者在你的代碼:

s = s.Replace(s[StringSize-1], (char)((int)s[StringSize-1] - 1)); 

注意事項:

  • 這不會與 'A' 或 'A' 工作
  • 字符串是不可變的不能隨便更改字符。您可以創建一個新的字符串與替換字符,但這在技術上不是一回事。
+0

從技術上講,字符串是不可變的,但是,您可能會創建一個'unsafe'函數來使用指針操縱字符串。但是,這絕對不是一個好主意。 – Icemanind 2014-10-06 16:55:03

+0

@icemanind是的,當你讓指針回來時,你可以做更多事情。正如你所說*不是*一個好主意,特別是對於一個新人。 – BradleyDotNET 2014-10-06 16:56:00

0

將返回字符串替換爲對象,但不更改其上的值。解決方案的:

s = s.Replace(s[StringSize-1], the previous char); 
0
var str = "abcd"; 
    for (int i = 0; i < str.Length; i++) 
    { 
     str = str.Replace(str[i], (char)((byte)str[i] - 1)); 
    } 
+0

@BradleyDotNET好吧,明白了。將更新我的答案。 – vikas 2014-10-06 17:41:27

相關問題