Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
|____WTF!?____|
94 / 93 / 11
Регистрация: 01.06.2010
Сообщений: 227
1

Найти несовпадения в строках...

16.01.2011, 21:04. Показов 949. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Имеются две строки:

C#
1
2
string a = "aaa bbb ccc ddd";
string b = "aaa bbb ccc eee ddd qqq";
Нужно сравнить эти две строки и в результате в
C#
1
string raznitca;
записать разницу между ними, т.е. в конце
C#
1
raznitca = "eee qqq";
Пытался реализовать это с помощью RegularExpressions, но что-то не получается
Не подскажите, пожалуйста?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.01.2011, 21:04
Ответы с готовыми решениями:

Как найти несовпадения в 4 -х StringList
Доброго времени суток! Есть 4 Мемо поля с данными. Как найти запись, которая не встречается ни в...

Найти наибольшие элементы в чётных строках матрицы, а наименьшие в нечётных строках
Дана матрица n*m. Найти наибольшие элементы в чётных строках, а наименьшие в нечётных строках. ...

Как найти слова, которые повторяются в обеих строках, если разделяю слова в строках , используя Tokenizer
Нужно вывести слова, которые повторяются в обеих строках. Сказали, что нужно разделить строки на...

Несовпадения кругов в VB6
Уважаемые программисты! Скажите, пожалуйста, почему, рисуя окружность через circle и line, мы...

5
826 / 717 / 110
Регистрация: 06.10.2010
Сообщений: 825
Записей в блоге: 1
16.01.2011, 21:33 2
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
using System;
using System.Linq;
 
namespace ConsoleApplicationTest {
    class Program {
        static void Main( string[] args ) {
            string a = "aaa bbb ccc ddd";
            string b = "aaa bbb ccc eee ddd qqq";
 
            string result = string.Join( " ", b.Split( ' ' ).Except( a.Split( ' ' ) ) );
 
            Console.WriteLine( result );
            Console.ReadKey();
        }
    }
}
1
|____WTF!?____|
94 / 93 / 11
Регистрация: 01.06.2010
Сообщений: 227
18.01.2011, 14:25  [ТС] 3
Спасибо, работает
А без
C#
1
using System.Linq;
как - нибудь можно? Программа работает на .NET FRM 2.0, а там к сожалению такого компанента нету
0
145 / 129 / 27
Регистрация: 20.12.2010
Сообщений: 242
18.01.2011, 16:01 4
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
using System;
using System.Text.RegularExpressions;
 
namespace сompare_str
{
   class Program
   {
      static void Main(string[] args)
      {
         string a = "aaa bbb ccc ddd";
         string b = "aaa bbb ccc eee ddd qqq";
         Regex rx = new Regex("[^" + a.Replace(" ", "") + "]");
         MatchCollection mc = rx.Matches(b);
         foreach (Match m in mc) 
         {
            Console.Write(m.Value);
         }
         Console.ReadKey();
      }
   }
}
правда при этом будет куча пробелов.
Наверняка есть более эффективный метод, либо убрать лишние пробелы.
консоль:
" eee qqq"
1
826 / 717 / 110
Регистрация: 06.10.2010
Сообщений: 825
Записей в блоге: 1
18.01.2011, 16:28 5
Как-то так, если с регулярками:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
using System;
using System.Text.RegularExpressions;
 
namespace ConsoleApplicationTest {
    static class Program {
        static void Main( string[] args ) {
            string a = "  aaa  bbb  ccc    ddd";
            string b = "aaa bbb ccc    eee ddd qqq  ";
            string pattern = string.Join( @"\s*|", a.Split( new[] { " " }, StringSplitOptions.RemoveEmptyEntries ) );
            string result = Regex.Replace( b.Trim(), pattern, "" );
            Console.WriteLine( result );
            Console.ReadKey();
        }
    }
}
Добавлено через 17 минут
Как вариант, без всяких извращений:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
using System;
using System.Collections.Generic;
 
namespace ConsoleApplicationTest {
    static class Program {
        static void Main( string[] args ) {
            const string firstString = "  aaa  bbb  ccc    ddd";
            const string secondString = "aaa bbb ccc    eee ddd qqq  ";
 
            var secondElements = secondString.Split( new[] { " " }, StringSplitOptions.RemoveEmptyEntries );
 
            var resultArr = new List<string>();
            foreach ( var item in secondElements ) {
                if ( !firstString.Contains( item ) ) {
                    resultArr.Add( item );
                }
            }
 
            foreach ( var s in resultArr ) {
                Console.WriteLine( s );
            }
            Console.ReadKey();
        }
    }
}
1
72 / 17 / 2
Регистрация: 29.12.2010
Сообщений: 339
19.01.2011, 02:07 6
Через цикл сверяешь каждый элемент первой строки со второй, при несовпадении удаляешь элемент из второй строки и заносишь в какую-нибудь переменную)Всё!!!Если понял, ЧТО я имел ввиду, поставь плюсик))
0
19.01.2011, 02:07
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.01.2011, 02:07
Помогаю со студенческими работами здесь

Ошибка несовпадения типов: Incopatible types
Помогите разобраться с ошибкой в делфи, несовпадение типов: Incopatible types slovo and TCaption. Я...

Вывод информации в случае совпадения и несовпадения
Люди ХЭЛП ... Помогите с кодом &lt;?php mysql_set_charset (&quot;content-type=utf8&quot;); $db...

Какие могут быть последствия несовпадения тайминга?
Какие могут быть последствия несовпадения тайминга?Как определить значение тайминга?

Сравнить две datagridview (два столбца), выделить несовпадения
Всем привет, помогите, пожалуйста с кодом. Мне нужно сравнить две таблицы. Обе datagrid...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru