Вернуться   Развлекательный портал CN.ru - Форум > Технологии > Программирование > Обмен опытом

Ответ
 
Опции темы
Старый 06.06.2009, 18:47 ↑ #1
LightningStorm Мужской
новосёл
 
Аватар для LightningStorm
 
Регистрация: 21.06.2008
Адрес: Nsk
Возраст: 29
Сообщений: 16
Репутация: 2
LightningStorm молчание-золото
Отправить сообщение для LightningStorm с помощью ICQ
Post метод split() класса Java.lang.String

собственно хочу понять как работать с результатами этого метода / как правильно польоваться им. Имеется строка содержащая элементы вида "(<int>|<int>)" (например "(537|223)" ), разделенные пробелами, методом split хочу извлечь из них целые числа
как известно возвращает он массив String[]

код:

class MyTrimTest **
public static void main(String[] args) **
String buf = new String("(775|531)");
String[] tmp = buf.split("|");
for(int i = 0; i < 10; i++)
System.out.println(tmp[i]);
}
}

но на консоль он выдает нечто непохожее на то что мне нужно...
(
7
7
5
|
5
3
1
)
не могу понять в чем дело...думал что строки по аналогии с С воспринимаются как массив - так нет, когда пишу tmp[i][j] - говорит что неверно - ищет массив а получает String
LightningStorm вне форума   Ответить с цитированием
Старый 09.06.2009, 16:43 ↑ #2
Turetskiy
новый эго-житель
 
Аватар для Turetskiy
 
Регистрация: 27.08.2008
Сообщений: 1
Репутация: 0
Turetskiy молчание-золото
По умолчанию Re: метод split() класса Java.lang.String

знак "|" поменяй например на ":"
Turetskiy вне форума   Ответить с цитированием
Старый 09.06.2009, 17:13 ↑ #3
RiPPeR Мужской
1337
завсегдатай эго-форума
 
Аватар для RiPPeR
 
Регистрация: 29.01.2005
Сообщений: 243
Репутация: 134
RiPPeR на верном пути RiPPeR на верном пути
Отправить сообщение для RiPPeR с помощью ICQ
По умолчанию Re: метод split() класса Java.lang.String

Цитата:
Сообщение от LightningStorm Посмотреть сообщение
не могу понять в чем дело...думал что строки по аналогии с С воспринимаются как массив - так нет, когда пишу tmp[i][j] - говорит что неверно - ищет массив а получает String
В Java нет перегрузки оператора, как в С++, поэтому tmp[i][j] отпадает.
Аргумент split - патерн, вот так работает:

Код:
    public static void main(String[] args) **
        String buf = new String("(775|531)");
        String[] tmp = buf.split("\\D");
        for (int i = 0; i < tmp.length; i++) **
            System.out.println(tmp[i]);
        }
    }
\D - non-digit, если интересно все о патернах описано в javadoc
RiPPeR вне форума   Ответить с цитированием
Старый 09.06.2009, 19:35 ↑ #4
Junior Мужской
завсегдатай эго-форума
 
Регистрация: 08.05.2006
Адрес: 151 nano
Возраст: 33
Сообщений: 337
Репутация: 434
Junior за словом в карман не полезет Junior за словом в карман не полезет Junior за словом в карман не полезет Junior за словом в карман не полезет Junior за словом в карман не полезет
По умолчанию Re: метод split() класса Java.lang.String

У меня вот что получилось (только, я еще в int переконвертировал, если, как я понял автора, нужно получить целые числа):

Код:
    public static void main(String args[]) **
        String buf = "(755|223)";
    String array[] = buf.split("\\D+");
    int array_final[] = new int[array.length];
for (int i = 1; i < array.length; i++) **
    array_final[i] = Integer.valueOf(array[i]);
   System.out.println(array_final[i]);
    }
  }

Последний раз редактировалось Junior; 09.06.2009 в 19:37.
Junior вне форума   Ответить с цитированием
Старый 12.06.2009, 05:52 ↑ #5
LightningStorm Мужской
новосёл
 
Аватар для LightningStorm
 
Регистрация: 21.06.2008
Адрес: Nsk
Возраст: 29
Сообщений: 16
Репутация: 2
LightningStorm молчание-золото
Отправить сообщение для LightningStorm с помощью ICQ
По умолчанию Re: метод split() класса Java.lang.String

спасибо )) работают оба варианта - выводят по 1му целому в строке ) весьма благодарен (пошел читать javadoc)
LightningStorm вне форума   Ответить с цитированием
Старый 13.12.2012, 03:42 ↑ #6
Hamros
новый эго-житель
 
Регистрация: 13.12.2012
Сообщений: 3
Репутация: 0
Hamros молчание-золото
По умолчанию Re: метод split() класса Java.lang.String

Какое число присваивается элементу String массива, созданного методом split?
Какие возможны виды записи кода с использованием метода split?
Сколько может быть параметров в этом методе и что они означают?
Я несколько сайтов посетил, посвященных обучению классам String в java но не нашел полного и канкретного ответа на все свои вопросы.
Hamros вне форума   Ответить с цитированием
Старый 13.12.2012, 10:09 ↑ #7
Junior Мужской
завсегдатай эго-форума
 
Регистрация: 08.05.2006
Адрес: 151 nano
Возраст: 33
Сообщений: 337
Репутация: 434
Junior за словом в карман не полезет Junior за словом в карман не полезет Junior за словом в карман не полезет Junior за словом в карман не полезет Junior за словом в карман не полезет
По умолчанию Re: метод split() класса Java.lang.String

http://docs.oracle.com/javase/1.4.2/...va.lang.String, int)

javadoc рулит
Junior вне форума   Ответить с цитированием
Старый 13.12.2012, 10:38 ↑ #8
Hamros
новый эго-житель
 
Регистрация: 13.12.2012
Сообщений: 3
Репутация: 0
Hamros молчание-золото
По умолчанию Re: метод split() класса Java.lang.String

ё-маё! а порусски есть??
Hamros вне форума   Ответить с цитированием
Старый 13.12.2012, 15:13 ↑ #9
Junior Мужской
завсегдатай эго-форума
 
Регистрация: 08.05.2006
Адрес: 151 nano
Возраст: 33
Сообщений: 337
Репутация: 434
Junior за словом в карман не полезет Junior за словом в карман не полезет Junior за словом в карман не полезет Junior за словом в карман не полезет Junior за словом в карман не полезет
По умолчанию Re: метод split() класса Java.lang.String

1) На первый вопрос не ответят даже разработчики языка java
непонятна трактовка...
Если Вас интересует длина результирующего массива, ее всегда можно получить путем вызова final-перемнной length (примеры выше)

2) Зависит от того, что возвращает сам метод split() а из javadoc ясно, что возвращает он массив строк...

3) опять же из javadoc очевидно, что два: первый - разделитель, второй - int-переменная, определяющая количество применений шаблона regexp к разбиваемой строке и соответственно влияющей на конечный результат...

Попробуйте поэкспериментировать в простой программе и посмотрите, что получите в итоге...

Пару советов:
- для языков высокого уровня нет достойной документации на русском языке, так что учите английский хотя бы технический...
- полюбите javadoc
Junior вне форума   Ответить с цитированием
Старый 15.12.2012, 03:09 ↑ #10
Hamros
новый эго-житель
 
Регистрация: 13.12.2012
Сообщений: 3
Репутация: 0
Hamros молчание-золото
По умолчанию Re: метод split() класса Java.lang.String

1) Какое число присваивается индексу первого элемента массива? Я не понимаю какое начальное значение первой итерации цикла for я должен задать индексу, включая полученный массив символов в него.

Хорошие советы, только я английский не могу выучить уже 5 лет, зато могу за 2 недели усвоить базовые навыки по новому языку программирования так, что буду не слова в коде читать, а понимать что делает программа.
Hamros вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Текущее время: 01:13. Часовой пояс GMT +6.
Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd. Перевод: zCarot

ВКонтактeTwitterFacebook
Хотите связаться с нами? Напишите письмо, и мы обязательно ответим.