2016-03-02 62 views
0

我有一個字符串,我從中刪除任何非數值。這部分的偉大工程,但我不能讓我的語法準確去除第1個數字如果是1,這是我已經試過了,但它提出編譯時錯誤:刪除第一個數字如果它是1

string num1 = "1abcdedg2345; 
string gn = null; 
if (num1[0] = "1") { gn = num1.Remove(0, 1); } 
else { gn = num1; } 
Console.WriteLine(gn); 

我需要什麼改變,以便gn將是2345?我現在的語法總是GN = 12345

+5

你正在嘗試做一個'assignment',而你需要一個'比較'。試試if(num1 [0]'=='「1」)。請注意double ==。 – Matthijs

+1

'num1 [0] ==「1」'please :) – AnhTriet

+3

'num [0]'返回一個'char',所以:'if(num [0] =='1')' –

回答

2

的問題是,你正在做的,而不是比較(= VS ==)一個任務,並有num1[0]char)和"1"string)之間的類型不匹配。相反,你可以使用string.StartsWith,它增加了可讀性。

if (num1.StartsWith("1")) { gn = num1.Remove(0, 1); } 
1

你錯過了一個等號,做一個偶然的分配

if (num1[0] == '1') { gn = num1.Remove(0, 1); } 

編輯:也「1」是一個字符,其中「1」是一個字符串(感謝評論)

+3

這表示錯誤==不能應用於'char'和'string'的操作數 –

+3

您可以使用單引號進行字符比較,而不是雙引號。所以''1''而不是''1「'。 – Matthijs

+1

由於'num1'字符串缺少結尾報價,它仍然不會編譯 – Sayse

1
在某些情況下

(你如弦的作品),你可以用一個簡單的

string s = "1abcdedg2345"; 
s = s.TrimStart('1'); 
// s = "abcdedg2345" 

要注意做到這一點......它會刪除所有的啓動1,因此不會有這方面的工作

string s = "1111abcdedg2345"; 
s = s.TrimStart('1'); 
// s = "abcdedg2345" it may be correct or not... i don't know... 
0

你說「我有我的去除任何非數字值的字符串」 - 相反,你應該使用正則表達式查找/替換刪除任何不是一個數字

string gn = System.Text.RegularExpressions.Regex.Replace("df87sdf248f7", @"\D", ""); 
+1

如果第一個字符是1,那麼它將如何去除? A 1是一個數字字符 –

+0

他的目標是「我有一個字符串,我正在刪除任何非數字值」,他正在努力編寫不忽略第一個字符的代碼。他的方法是錯誤的。 –

相關問題