using System;
using System.Text .RegularExpressions ;
using System.Collections .Generic ;
using System.Linq ;
public class Test
{
private static string LookupReplace( string text, List< string> newList)
{
return "~" + newList.IndexOf ( text) .ToString ( ) + "~" ;
}
private static string NumberedReplace( )
{
i++;
return "~" + i.ToString ( ) + "~" ;
}
public static int i = - 1 ;
public static void Main( )
{
string text = "iif(instr(|Wellington, New Zealand|,|,|)>0,|Wellington, New Zealand|,|Wellington, New Zealand| & |, | & |New Zealand|) & | to | & iif(instr(|Jeddah, Saudi Arabia|,|,|)>0,|Jeddah, Saudi Arabia|,|Jeddah, Saudi Arabia| & |, | & |Saudi Arabia|) & iif(|Jeddah, Saudi Arabia|=||,||,| via | & |Jeddah, Saudi Arabia|)" ;
var re = new Regex( @"\|.*?\|" ) ;
var newList = re.Matches ( text)
.OfType < Match> ( )
.Select ( m => m.Value )
.ToList ( ) ;
string result = re.Replace ( text, x => LookupReplace( x.Value , newList) ) ;
Console.WriteLine ( result) ;
result = re.Replace ( text, x => NumberedReplace( ) ) ;
Console.WriteLine ( result) ;
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uVGV4dC5SZWd1bGFyRXhwcmVzc2lvbnM7CnVzaW5nIFN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljOwp1c2luZyBTeXN0ZW0uTGlucTsKCnB1YmxpYyBjbGFzcyBUZXN0CnsKIAlwcml2YXRlIHN0YXRpYyBzdHJpbmcgTG9va3VwUmVwbGFjZShzdHJpbmcgdGV4dCwgTGlzdDxzdHJpbmc+IG5ld0xpc3QpCiAJewoJCXJldHVybiAifiIgKyBuZXdMaXN0LkluZGV4T2YodGV4dCkuVG9TdHJpbmcoKSArICJ+IjsKIAl9CiAJCiAgCXByaXZhdGUgc3RhdGljIHN0cmluZyBOdW1iZXJlZFJlcGxhY2UoKQogCXsKCQlpKys7CgkJcmV0dXJuICJ+IiArIGkuVG9TdHJpbmcoKSArICJ+IjsKIAl9CiAJCiAgICBwdWJsaWMgc3RhdGljIGludCBpID0gLTE7CiAgICAKICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBNYWluKCkKICAgIHsgICAKICAgICAgICBzdHJpbmcgdGV4dCA9ICJpaWYoaW5zdHIofFdlbGxpbmd0b24sIE5ldyBaZWFsYW5kfCx8LHwpPjAsfFdlbGxpbmd0b24sIE5ldyBaZWFsYW5kfCx8V2VsbGluZ3RvbiwgTmV3IFplYWxhbmR8ICYgfCwgfCAmIHxOZXcgWmVhbGFuZHwpICYgfCB0byB8ICYgaWlmKGluc3RyKHxKZWRkYWgsIFNhdWRpIEFyYWJpYXwsfCx8KT4wLHxKZWRkYWgsIFNhdWRpIEFyYWJpYXwsfEplZGRhaCwgU2F1ZGkgQXJhYmlhfCAmIHwsIHwgJiB8U2F1ZGkgQXJhYmlhfCkgJiBpaWYofEplZGRhaCwgU2F1ZGkgQXJhYmlhfD18fCx8fCx8IHZpYSB8ICYgfEplZGRhaCwgU2F1ZGkgQXJhYmlhfCkiOwogICAgICAgIHZhciByZSA9IG5ldyBSZWdleChAIlx8Lio/XHwiKTsKICAgICAgICB2YXIgbmV3TGlzdCA9IHJlLk1hdGNoZXModGV4dCkKICAgICAgICAgICAgCQkJLk9mVHlwZTxNYXRjaD4oKQogICAgICAgICAgICAJCQkuU2VsZWN0KG0gPT4gbS5WYWx1ZSkKICAgIAkJCQkJLlRvTGlzdCgpOwogICAgICAgIHN0cmluZyByZXN1bHQgPSByZS5SZXBsYWNlKHRleHQsIHggPT4gTG9va3VwUmVwbGFjZSh4LlZhbHVlLCBuZXdMaXN0KSk7CiAgICAgICAgQ29uc29sZS5Xcml0ZUxpbmUocmVzdWx0KTsKICAgICAgICAKICAgICAgICByZXN1bHQgPSByZS5SZXBsYWNlKHRleHQsIHggPT4gTnVtYmVyZWRSZXBsYWNlKCkpOwogICAgICAgIENvbnNvbGUuV3JpdGVMaW5lKHJlc3VsdCk7CiAgICB9CiAgICAKfQ==
stdout
iif(instr(~0~,~1~)>0,~0~,~0~ & ~4~ & ~5~) & ~6~ & iif(instr(~7~,~1~)>0,~7~,~7~ & ~4~ & ~12~) & iif(~7~=~14~,~14~,~16~ & ~7~)
iif(instr(~0~,~1~)>0,~2~,~3~ & ~4~ & ~5~) & ~6~ & iif(instr(~7~,~8~)>0,~9~,~10~ & ~11~ & ~12~) & iif(~13~=~14~,~15~,~16~ & ~17~)