strange behavior from Regex.Split & myString.IndexOf

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • mad.scientist.jr@gmail.com

    strange behavior from Regex.Split & myString.IndexOf

    I am working in C# ASP.NET framework 1.1 and
    for some reason Regex.Split isn't working as expected.
    When trying to split a string, Split is returning an array
    with the entire string in element [0] and an empty string in element
    [1].
    I am trying two different ways (an ArrayList and a string array)
    and both are doing that. Also, IndexOf is not working,
    but StartsWith does.

    The code:

    using System.Text.Reg ularExpressions ;
    ...
    // some code to find CheckBoxList controls in
    Request.Form
    // look at Request.Form keys and split out delimiter
    // which sometimes is "$" (ie "CheckBoxList1$ 1")
    // and sometimes ":" (ie CheckBoxList1:1 )
    // (is there any property for what .NET uses?), so to
    get delim we
    // use a function to return 1st non alphanum char
    after control name
    string _sIndexDelim =
    GetControlNameD elimiter(CheckB oxList1.ID);
    foreach (string _key in
    HttpContext.Cur rent.Request.Fo rm.AllKeys)
    {
    //FOR SOME ODD REASON, THIS DOESN'T WORK:
    //if (_key.IndexOf(C heckBoxList1.ID +
    _sIndexDelim, 1) 0)
    // BUT THIS WORKS (?)
    if (_key.StartsWit h(CheckBoxList1 .ID +
    _sIndexDelim))
    {
    _arrKey = new ArrayList();
    _arrKey.AddRang e(Regex.Split(_ key,
    _sIndexDelim)); // does not split!
    string[] substrings = Regex.Split(_ke y,
    _sIndexDelim); // does not split!

    The values:

    ?_key
    "CheckBoxList1$ 1"
    ?_sIndexDelim
    "$"

    ?_arrKey[0]
    "CheckBoxList1$ 1"
    ?_arrKey[1]
    ""

    ?substrings[0]
    "CheckBoxList1$ 1"
    ?substrings[1]
    ""

    Any ideas why this is happening?

    Thanks
  • Jesse Houwing

    #2
    Re: strange behavior from Regex.Split & myString.IndexO f

    Hello mad.scientist.j r@gmail.com,

    This isn't working because $ has a special meaning in Regular expressions
    (end of line, or end of input).

    To make sure the regex works with any input use string regex = Regex.Escape("$ ");

    which should make it \$.


    Jesse
    I am working in C# ASP.NET framework 1.1 and
    for some reason Regex.Split isn't working as expected.
    When trying to split a string, Split is returning an array
    with the entire string in element [0] and an empty string in element
    [1].
    I am trying two different ways (an ArrayList and a string array)
    and both are doing that. Also, IndexOf is not working,
    but StartsWith does.
    The code:
    >
    using System.Text.Reg ularExpressions ;
    ...
    // some code to find CheckBoxList controls in
    Request.Form
    // look at Request.Form keys and split out delimiter
    // which sometimes is "$" (ie "CheckBoxList1$ 1")
    // and sometimes ":" (ie CheckBoxList1:1 )
    // (is there any property for what .NET uses?), so to
    get delim we
    // use a function to return 1st non alphanum char
    after control name
    string _sIndexDelim =
    GetControlNameD elimiter(CheckB oxList1.ID);
    foreach (string _key in
    HttpContext.Cur rent.Request.Fo rm.AllKeys)
    {
    //FOR SOME ODD REASON, THIS DOESN'T WORK:
    //if (_key.IndexOf(C heckBoxList1.ID +
    _sIndexDelim, 1) 0)
    // BUT THIS WORKS (?)
    if (_key.StartsWit h(CheckBoxList1 .ID +
    _sIndexDelim))
    {
    _arrKey = new ArrayList();
    _arrKey.AddRang e(Regex.Split(_ key,
    _sIndexDelim)); // does not split!
    string[] substrings = Regex.Split(_ke y,
    _sIndexDelim); // does not split!
    The values:
    >
    ?_key
    "CheckBoxList1$ 1"
    ?_sIndexDelim
    "$"
    ?_arrKey[0]
    "CheckBoxList1$ 1"
    ?_arrKey[1]
    ""
    ?substrings[0]
    "CheckBoxList1$ 1"
    ?substrings[1]
    ""
    Any ideas why this is happening?
    >
    Thanks
    >
    --
    Jesse Houwing
    jesse.houwing at sogeti.nl


    Comment

    Working...