2016-03-02 4 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? Мой текущий синтаксис всегда дп = 12345

+5

Вы пытаетесь выполнить «назначение», вместо этого вам нужно «сравнение». Попробуйте, если (num1 [0] '==' "1"). Обратите внимание на double ==. – Matthijs

+1

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

+3

'num [0]' возвращает 'char', поэтому:' if (num [0] == '1') ' –

ответ

2

проблемы, что вы делаете назначение вместо сравнения (= против ==) и существует несоответствие между типом 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-й символ, если это 1? A 1 является числовым символом –

+0

Его цель: «У меня есть строка, в которой я удаляю любые ненулевые значения из», он изо всех сил пытается написать код, который не игнорирует первый символ. Его подход ошибочен. –