2017-01-02 5 views
2

У меня есть файл CSV, где я хочу заменить первый символ 0 с +46, но я не могу сделать эту работу так, как я хочу.Заменить первый символ в строке

У меня есть следующий код, который работает, но он работает на всех нулей, а не только первый один:

$csv = Import-Csv test.csv 
$csv | ForEach-Object { 
    $_.mobile = $_.mobile.Replace("0", "+46") 
} 
$csv | Export-Csv -Encoding "UTF8" new-test.csv -NoTypeInformation 

Любая идея, как сделать эту работу только на первый символ в строке?

+1

«первый символ, который равен 0» или «первый символ, * если * это 0»? –

+0

Поскольку код '+ 46' является кодом страны Швеции, похоже, что речь идет о преобразовании телефонных номеров из внутреннего в международный формат. – vonPryz

+0

@vonPryz Это тоже было мое впечатление, поэтому вопрос :) –

ответ

4

Это происходит, поскольку String.Replace() заменит all the occurrences.

Чтобы заменить только первый, используйте регулярные выражения. Используя начало привязки линии, ^, замена ограничивается началом строки. Вроде так,

$_.mobile = $_.mobile -replace "^0", "+46" 
+0

Это великолепно работает, спасибо. Как вы можете видеть, это не то, что я обычно делаю, но я думаю, вы должны начать где-то –

Смежные вопросы