Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сравнение строк 
:(
    Опции темы
DissDoc
Дата 19.11.2007, 13:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 463
Регистрация: 13.7.2006

Репутация: нет
Всего: нет



Как сравнить строки в C#? 
А именно, у меня есть две строки "12.333" и "11.333", как сравнить эти строки и понять, что 12.333 идет после 11.333?

[Update]
Тут даже не столько сравнение, сколько СОРТИРОВКА строк...

Это сообщение отредактировал(а) DissDoc - 19.11.2007, 14:04
PM MAIL WWW   Вверх
HalkaR
Дата 19.11.2007, 14:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пуфыстый назгул
****


Профиль
Группа: Экс. модератор
Сообщений: 2132
Регистрация: 8.12.2002
Где: В Москве

Репутация: 5
Всего: 42



DissDoc, как тебе надо сортировать строки - как строки или как числа?

Если как строки то проще всего воспользоваться стандартным Comparer<string>.Default.Compare(string a, string b).
PM MAIL   Вверх
DissDoc
Дата 19.11.2007, 14:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 463
Регистрация: 13.7.2006

Репутация: нет
Всего: нет



Нет, вы не поняли...
Как бы так объяснить...
Мне надо скорее всего такие строки как числа сравнивать, т.е. получить, что "12.333" > "11.333"

Вот что ли... я надеюсь понятнее объяснил проблему.
PM MAIL WWW   Вверх
Wizard_Memfis
Дата 19.11.2007, 14:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 193
Регистрация: 12.2.2007
Где: г. Донецк, Украин а

Репутация: 2
Всего: 4



Если там только числа, то почему бы не отпарсить это в число?
--------------------
www.binary-studio.com
PM MAIL WWW ICQ Skype   Вверх
Experimenter
Дата 19.11.2007, 14:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 430
Регистрация: 8.5.2007
Где: Уфа

Репутация: 4
Всего: 17



Код

using System;
using System.Data;

class Comparer
{
    static void Main()
    {
        Console.WriteLine("Comparer");
        string s1 = "2.11", s2 = "3.10";
        Console.WriteLine(s1.CompareTo(s2));
        Console.ReadLine();
    }
}
Попробуй поменять значения и увидишь разницу, даже в число парсить не надо

Это сообщение отредактировал(а) Experimenter - 19.11.2007, 14:44


--------------------
public Zlo FromTwoEvilsChooseSmaller(Zlo zlo1, Zlo zlo2){
    if(zlo1 < zlo2) return zlo1;
    else if(zlo1 > zlo2) return zlo2;
    else throw new Exception("Kill yourself by the wall"); }
PM WWW ICQ   Вверх
1stain
Дата 19.11.2007, 14:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 486
Регистрация: 30.7.2007
Где: Киев - Харьков

Репутация: 3
Всего: 40



DissDoc, то, что  "12.333" идет после "11.333"  ты получишь даже сравнивая как строки, а вот "111.333" > "12.333" - это уже только как числа.

реализуй свой Comparer, примерно так, как написано в коде и используй его для сравнения строк как чисел Кстати этот объект можно использовать для сортировки
Код

    public sealed class CustomStringComarer : IComparer<String>
    {
        private CustomStringComarer()
        { }
        private static CustomStringComarer _instance;
        public static CustomStringComarer Instance
        {
            get 
            {
                if (_instance == null)
                    _instance = new CustomStringComarer();
                return _instance;
            }
        }
        public int Compare(string x, string y)
        {
            double d1 = Double.Parse(x, System.Globalization.NumberStyles.Float, System.Globalization.NumberFormatInfo.InvariantInfo);
            double d2 = Double.Parse(y, System.Globalization.NumberStyles.Float, System.Globalization.NumberFormatInfo.InvariantInfo);
            return d1.CompareTo(d2);
        }
    }

        static void Main(string[] args)
        {
            String s1 = "123.345";
            String s2 = "23.66";
            Console.WriteLine(CustomStringComarer.Instance.Compare(s1, s2).ToString());
        }


Это сообщение отредактировал(а) 1stain - 19.11.2007, 14:47


--------------------
Все знают, что это невозможно. Но вот приходит невежда, которому это неизвестно - он-то и делает открытие. (Albert Einstein)
user posted image
PM MAIL   Вверх
RWander
Дата 22.11.2007, 21:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 349
Регистрация: 4.5.2006
Где: Russia.Udm.Izhevs k

Репутация: 1
Всего: 6



Код

  string str1 = "12.333"; 
  string str2 =  "11.333";
  try
  {
      float f1 = Convert.ToSingle(str1);
      float f2 = Convert.ToSingle(str2);
      if (f1 > f2)
      ....
  }
  catch (Exception ex)
  {
      MessageBox.Show(ex.Message);
  }


Это сообщение отредактировал(а) RWander - 22.11.2007, 21:36


--------------------
Microsoft Certified Technology Specialist - ASP.NET Applications
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | .NET для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1148 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.