2016-06-08 1 views
1

я должен заменить номер телефона в документе, но когда нет номера телефона от пользователя мю я должен удалить эту строку документ по умолчанию выглядит следующим образом:Powershell + в строке не действует

company 
street 
T: +00 xxx xxx xxx #phone 
F: +00 xxx xxx xxx #Fax 
M: +00 xxx xxx xxx #Mobile 

Когда, например, пользователь не имеет мобильного телефона я должен удалить эту строку

$content = $content -replace "M:","" 
$content = $content -replace "+00","" 
$content = $content -replace "xxx xxx xxx","" 

Но я получаю эту ошибку

The regular expression pattern +39 is not valid. 
At line:65 char:1 
+ $content = $content -replace "+39","" 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    + CategoryInfo   : InvalidOperation: (+39:String) [], RuntimeException 
    + FullyQualifiedErrorId : InvalidRegularExpression 

Как я теперь могу удалить эту строку, когда оболочка власть не нужна моя + в строке

Удалить строку:

После удаления успешного номер документа мобильного выглядит следующим образом:

company 
street 
T: +00 xxx xxx xxx #phone 
F: +00 xxx xxx xxx #Fax 

more information 

но это должно выглядеть следующим образом

company 
    street 
    T: +00 xxx xxx xxx #phone 
    F: +00 xxx xxx xxx #Fax 
    more information 
+0

вы можете привести пример строки, где номер телефона необходимо получить удален? –

+0

Можете ли вы также показать, что должно быть в конце? –

+0

Надеюсь, теперь вы понимаете, что я имею в виду :) –

ответ

2

не следует использовать регулярное выражение replace, но использовать String.Replace:

$content = $content.Replace("M:","") 
$content = $content.Replace("+00","") 
$content = $content.Replace("xxx xxx xxx","") 

Это должно работать для вас:

$content = Get-Content $filepath | foreach-object { if (!$_.StartsWith("M:")) { $_ } } 
$content 
+0

спасибо, что сработало, и как я могу удалить строку, нет пробелов между следующими строками –

+0

после строки, где номер мобильного телефона - это другие строки с информацией. Когда я устанавливаю строку с номером мобильного телефона в «" (ничего), есть одна строка без каких-либо изменений в том, как я могу удалить эту строку, которая больше не содержит пробела между строкой Факс и следующей строкой –

+0

Можно ли получить это как строковый массив вместо 1 строки? –

1

Вы также можете использовать regex фильтровать их:

$content | Where { $_ -notmatch '^M: \+00' } 
+0

Черт, избили меня! – briantist

+0

@briantist извините :-p. –

+0

heh all good, +1 – briantist