2010-06-07 3 views
3

мне нужна помощь в отделке все в моих строках до конца после того, как он встречает первый «\ 0»нужно обрезать строку до конца после определенной комбинации символов

Итак:

«тест \ 1 \ 2 \ 3 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0_asdfgh_qwerty_blah_blah_blah»

становится

"тест \ 1 \ 2 \ 3"

Я использую C#. Помощь будет принята с благодарностью.

Спасибо.

+0

Попробуйте регулярную замену выражение: 's/^ ([^ \ 0] +) \ 0 */$ 1 /' должен работать.. К сожалению, я не знаю своего C# достаточно, чтобы напечатать его, не глядя на него. –

+2

Является ли это escape-кодом '(char) 0' или литеральной строкой' '\ 0" '? –

+0

Мэтт: Я попробую заменить регулярное выражение. Благодарю. – bits

ответ

6

Как насчет:

string s = "test\1\2\3\0\0\0\0\0\0\0\0\0_asdfgh_qwerty_blah_blah_blah"; 

int offset = s.IndexOf("\\0"); 
if (offset >= 0) 
    s = s.Substring(0, offset); 
+1

Что делать, если строка ввода не содержит такую ​​подстроку? Он выкинет Exception – abatishchev

+0

s = s.Substring (0, Math.Max ​​(0, s.IndexOf ("\\ 0")); –

+2

Это неверно, так как второй аргумент 'Substring' - это длина. 'd want 'Math.Max ​​(s.Length, s.IndexOf (" \\ 0 ")'. –

5
if (someString.Contains("\\0")) 
    someString = someString.Substring(0, someString.IndexOf("\\0")); 
+0

Что произойдет, если у вас не было "if" там? вы бы получили ту же строку обратно, что и вы искали? – VoodooChild

+1

@VoodooChild: 'IndexOf' вернет -1, если исходная строка не содержит подстроку, и это сломает' Substring' – abatishchev

+0

@Anthony: Также вы может использовать '(@" \ 0 ")', чтобы сделать код более удобочитаемым – abatishchev

1

Найти позицию первого вхождения «\ 0» и сделать еще одну строку, которая является подстрокой вас оригинал от начала до положения точки первое появление.

+0

Мне лучше получить голосование за продуманное объяснение, а не просто бросать ответ на доске lol .... – VoodooChild

0
if (origString.IndexOf(@"\0") != -1) { 
    newString = origString.Substring(0, origString.IndexOf(@"\0"); 
} else { 
    newString = origString; 
} 
+0

Я вижу, что я t он только тот, кто принял во внимание случай, когда в строке нет '\ 0' :) –

0

Значение матч возвращается следующим регулярным выражением должно быть то, что вы после этого, а также (в качестве альтернативы методу подстроки), в основном это начинается в строке запуска и до тех пор, следующие два символа Арен» т \0 он расширяет матч:

^(?:(?!=\0).)+ 
Смежные вопросы