Привет всем! Подскажите пожалуйста как удалить лишние символы из переменной?
К примеру, у меня в скрипте Powershell, создаётся текстовая переменная: $username c текстом:
REGIONS\i2803-04-113
REGIONS\i2803-04-126
REGIONS\i2803-04-156
Ну а мне совершенно не нужно слово REGIONS\ а нужно просто:
i2803-04-113
i2803-04-126
i2803-04-156
Как убрать лишнее из переменной? Ну или создать новую, уже без лишних символов? Помогите чайнику, заранее спасибо.
PowerShell - [решено] Как удалить мусор из переменной?
-
greg zakharov
Re: PowerShell - [решено] Как удалить мусор из переменной?
Что значит текстовая переменная? Может все же переменная, содержащая объект типа строка?
Код:
Тогда самый простой способ:
Код:
Этот же прием работает, если переменная является массивом строк, например.
Код:
Код: Выделить всё
PS E:\> $username.GetType()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True String System.ObjectТогда самый простой способ:
Код:
Код: Выделить всё
PS E:\> $username -replace 'regions\\', ''
i2803-04-113
i2803-04-126
i2803-04-156Этот же прием работает, если переменная является массивом строк, например.
-
Luka666
Re: PowerShell - [решено] Как удалить мусор из переменной?
Цитата greg zakharov:
Тогда самый простой способ:
Код: Выделить весь код
PS E:\> $username -replace 'regions\\', ''
i2803-04-113
i2803-04-126
i2803-04-156
Этот же прием работает, если переменная является массивом строк, например.
Спасибо очень выручил. А у мну не получалось потому-что я вводил: $username -replace "regions\" .
Мне бы ещё убрать лишнее со строковой переменной.
DisplayName
----------------
Петров Пётр Петрович
Ещё раз спасибо!
Тогда самый простой способ:
Код: Выделить весь код
PS E:\> $username -replace 'regions\\', ''
i2803-04-113
i2803-04-126
i2803-04-156
Этот же прием работает, если переменная является массивом строк, например.
PowerShell - [решено] Как удалить мусор из переменной?
Спасибо очень выручил. А у мну не получалось потому-что я вводил: $username -replace "regions\" .
Мне бы ещё убрать лишнее со строковой переменной.
DisplayName
----------------
Петров Пётр Петрович
Ещё раз спасибо!
-
greg zakharov
Re: PowerShell - [решено] Как удалить мусор из переменной?
Так как я не в курсе как именуется у Вас переменная на сей раз, а также действительно ли переменная хранит строку, а не какой иной объект, можно поступить так:
Код:
$a - переменная, в которой хранится строка, т.е. при попытке узнать тип переменной в хост будет возвращено следующее:
Код:
С помощью типа Regex находим индекс первого кириллического символа в строке, а далее методом Substring извлекаем нужную нам подстроку. Можно, конечно, сделать проще, но, повторяюсь, не в курсе, что действительно у Вас за переменная.
Код:
Код: Выделить всё
$a.Substring(($$=[Regex]::Match($a, '\p{IsCyrillic}').Index), $a.Length - $$)$a - переменная, в которой хранится строка, т.е. при попытке узнать тип переменной в хост будет возвращено следующее:
Код:
Код: Выделить всё
PS E:\> $a.GetType().Name
StringС помощью типа Regex находим индекс первого кириллического символа в строке, а далее методом Substring извлекаем нужную нам подстроку. Можно, конечно, сделать проще, но, повторяюсь, не в курсе, что действительно у Вас за переменная.
-
Luka666
Re: PowerShell - [решено] Как удалить мусор из переменной?
Не прокатило.
Произошла ошибка при вызове метода, так как [Selected.Microsoft.ActiveDirectory.Management.ADUser] не с
одержит метод с именем "Substring".
строка:1 знак:21
+ $username2.Substring
Произошла ошибка при вызове метода, так как [Selected.Microsoft.ActiveDirectory.Management.ADUser] не с
одержит метод с именем "Substring".
строка:1 знак:21
+ $username2.Substring
-
greg zakharov
Re: PowerShell - [решено] Как удалить мусор из переменной?
Цитата Luka666:
Но так, как переменная $username2 содержит запись в виде строки...
Хост Вам дал четко понять, что объект в переменной является типом [Selected.Microsoft.ActiveDirectory.Management.ADUser], а не строкой, именно поэтому Вам уже намекалось неоднократно - смотрите на возвращаемый тип с помощью невиртуального метода GetType, большинство ненужных вопросов отпадут сами по себе.
Цитата Luka666:
В описание учётки рабочей станции записывается: @{DisplayName=Петров Пётр Петрович}
Если для Вас Hashtable -eq String, то Вам лучше сперва отправиться на MSDN или почитать встроенную справку.
Код:
В общем, читайте указанные ресурсы до просветления.
Но так, как переменная $username2 содержит запись в виде строки...
Хост Вам дал четко понять, что объект в переменной является типом [Selected.Microsoft.ActiveDirectory.Management.ADUser], а не строкой, именно поэтому Вам уже намекалось неоднократно - смотрите на возвращаемый тип с помощью невиртуального метода GetType, большинство ненужных вопросов отпадут сами по себе.
Цитата Luka666:
В описание учётки рабочей станции записывается: @{DisplayName=Петров Пётр Петрович}
Если для Вас Hashtable -eq String, то Вам лучше сперва отправиться на MSDN или почитать встроенную справку.
Код:
Код: Выделить всё
PS E:\> $a = @{UserName='Гнутха Йынлоп'}
PS E:\> $a.UserName
Гнутха ЙынлопВ общем, читайте указанные ресурсы до просветления.
-
Luka666
Re: PowerShell - [решено] Как удалить мусор из переменной?
Всё. Дошло. Благодарю за терпение. Будем пытаться и дальше познавать PS.

