2016-06-02 3 views
1

У меня есть проблема с функцией быстрого Я писал для расщепления Sharepoint конкретных идентификаторов ({ID}; # {имя}):Split шпагатом в Powershell

function GetOnlyValue { 
param( 
[string] $fullValue 
) 

if(![string]::IsNullOrEmpty($fullValue)) 
{ 
    # On regarde si on a la valeur 
    if($fullValue -Like "*;#*") 
    { 
     $array = $fullValue -split ";#", 2, "simplematch" 

     return $array[-1] 
    } 
} 

return $fullValue 
} 

Но эта функция делает половину работы, потому что, например, когда я передаю значение, сформированное следующим образом: myId; #myName функция возвращает мне это значение: «#myName» вместо «myName».

Благодарим за помощь!

06/02/2016 EDIT: эта функция включена в модуль, который я импортирую в скрипт. Я использую его в соотношении с сайта в Sharepoint 2013, просматривая каждый SPListItem из SPList:

$formation = GetOnlyValue -fullValue $spItem["Formation"] 
+0

Невозможно воспроизвести здесь. ''myId; #myName' -split '; #', 2, 'simplematch'' работает так, как ожидалось. – Joey

+0

Я использовал простые и двойные кавычки, у меня всегда один и тот же результат:/ – GwenGuts

+0

попытайтесь вывести '$ spItem [" Formation "]' и обеспечить его строку –

ответ

0

Я не могу воспроизвести вашу проблему, но вы можете упростить свой сценарий, используя -replace:

function GetOnlyValue { 
    param( 
     [string] $fullValue 
    ) 

    $fullValue -replace '^.*#' 
} 
+0

Опять же, она разрезана на ';' но не в группе '; #'. В любом случае! – GwenGuts

+0

PLS показать мне строку, которую вы передаете в –

+0

Например: 457; #FirstName LastName - Организация. У меня есть вывод: #FirstName LastName - Организация – GwenGuts

1

Я хотел бы использовать регулярное выражение с группами захвата:

function GetOnlyValue 
{ 
    Param 
    ( 
     [string]$fullValue 
    ) 

    if($fullValue -match '(.*);#(.*)'){ 
     $Matches[2] 
    } 
} 
+0

Не для этого причина; их код должен работать нормально. Не все должно быть задано с помощью регулярных выражений, особенно если код не разбит для начала. – Joey

+0

@Joey Yep, так что до OP решать. Я просто предлагаю. – beatcracker

+0

Нет, даже с регулярным выражением, у меня есть проблема – GwenGuts

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