Подскажите пожалуйста, в чем проблема c # regex.split () - PullRequest
2 голосов
/ 22 июля 2010
string temp_constraint = row["Constraint_Name"].ToString();
string split_string = "FK_"+tableName+"_";
string[] words = Regex.Split(temp_constraint, split_string);

Я пытаюсь разбить строку, используя другую строку.

temp_constraint = FK_ss_foo_ss_fee
split_string = FK_ss_foo_

но возвращает массив одного измерения с той же строкой, что и в temp_constraint

Пожалуйста, помогите

Ответы [ 3 ]

1 голос
/ 22 июля 2010

Ваша операция разбиения отлично работает для меня:

string temp_constraint = "FK_ss_foo_ss_fee";
string split_string = "FK_ss_foo_";
string[] words = Regex.Split(temp_constraint, split_string);
foreach (string word in words)
{
    Console.WriteLine(">{0}<", word);
}

Вывод:

><
>ss_fee<

Я думаю, что проблема в том, что ваши переменные не установлены так, как вы думаете.Вам нужно будет выполнить отладку, чтобы найти ошибку в другом месте вашей программы.

Я бы также не использовал Split для этого (как Regex, так и String.Split).Вы на самом деле не разделяете ввод - вы удаляете строку с самого начала.Сплит не всегда может делать то, что вы хотите.Представьте, что у вас есть внешний ключ, подобный следующему:

FK_ss_foo_ss_fee_FK_ss_foo_ss_bee

Вы хотите получить ss_fee_FK_ss_foo_ss_bee, но разделение даст вам ss_fee_ и ss_bee.Это надуманный пример, но он демонстрирует, что то, что вы делаете, не разделено.

1 голос
/ 22 июля 2010

Вы должны использовать String.Split вместо

string[] words = 
    temp_constraint.Split(new []{split_string}, StringSplitOptions.None);
0 голосов
/ 23 июля 2010

string split использует массив символов для разделения текста и выполняет разбиение по каждому символу, что не всегда идеально.

В следующей статье показано, как разделить текст на целое слово

http://www.bytechaser.com/en/functions/ufgr7wkpwf/split-text-by-words-and-not-character-arrays.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...