简体   繁体   中英

How to split a string with '#' in C#

I tried to split a string wich contains these character #

domicilioSeparado = domicilio.Split(@"#".ToCharArray());

but every time the array contains just one member. I've tried a lot of combinations but anything seems to work, I also tried to replace the string with a blank space and it kinda works - the problem is that it remains a single string.

domicilio = domicilio.Replace(@"#", @" ");

How can I resolve this?

Complete code:

String[] domicilioSeparado;
String domicilio = dbRow["DOMICILIO"].ToString();

domicilioSeparado = domicilio.Split(@"#".ToCharArray());
if (Regex.IsMatch(domicilioSeparado.Last(), @"\d"))
{
    String domicilioSinNum = "";
    domicilioSinNum = domicilioSeparado[0];
    custTable.Rows.Add(counter, dbRow["CUENTA"], nombre,
        paterno, materno, domicilioSinNum, domicilioSeparado.Last(), tipoEntidad);
} 

If you just want to split a string on a delimiter, in this instance '#', then you can use this:

domicilioSeparado = domicilio.Split("#");

That should give you what you want. Your second attempt simply replaces all the characters '#' in the string with ' ', which doesn't seem to be what you want. Can we see the string you're trying to split? That might help explain why it's not working.

EDIT:

Ok, here's how I think your code should look, give this a shot and let me know how it goes.

List<string> domicilioSeparado = new List<string>();
String domicilio = dbRow["DOMICILIO"].ToString();

domicilioSeparado = domicilio.Split("#");

if (Regex.IsMatch(domicilioSeparado.Last(), @"\d"))
{
    String domicilioSinNum = "";
    domicilioSinNum = domicilioSeparado[0];
    custTable.Rows.Add(counter, dbRow["CUENTA"], nombre,
        paterno, materno, domicilioSinNum, domicilioSeparado.Last(), tipoEntidad);
} 

Try this:

string[] domicilioSeparado;
domicilioSeparado = domicilio.Split('#');

Some notes: 1 - It is ('#'), instead of ("#"); 2 - Replace does not split a string, it only replace that part, keeping as a single string.

In case you want an example that includes the printing of the whole array:

string domicilio = "abc#def#ghi";
string[] domicilioSeparado;
domicilioSeparado = domicilio.Split('#');
for (int i = 0; i < domicilioSeparado.Length; i++)
{
   MessageBox.Show(domicilioSeparado[i]);
}

It will open a Message Box for each element within domicilioSeparado.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM