2013-03-06 3 views
-1

Итак, пожалуйста, несите меня, поскольку у меня есть длинный вопрос, у меня есть код в java, который использует список массивов для реализации стека. Мне нужно иметь возможность вводить команду «push», чтобы добавить материал в стек. Однако моя проблема заключается в том, что она должна быть в формате pushSTUFF.Разбиение строк, таких как push1234 в java

Где «STUFF» - это что-нибудь, в верхнем регистре, в нижнем регистре, в строке, int и т. Д. То, как я пытался реализовать это, - это метод разделения строк, где PUSH является разделителем. Затем команда передается в регистр коммутатора.

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

Рассматривая эту проблему, я придумал пару способов, которыми я мог бы это сделать. Я просто не знаю, возможны ли они или как их выполнять.

Так,

  1. Есть ли способ, чтобы разбить строку как pushSTUFF и держать обе части (толкающего и набить)

  2. есть способ разделить, из строки, что-то неизвестной длины или содержимого (так как я не знаю, что пользователь будет вводить STUFF, неизвестно)

  3. Есть ли способ рассказать коммутатору о необходимости PushSTUFF, а не просто нажать (опять же потому, что STUFF неизвестно).

Есть ли какие-либо из этих возможностей? Если да, то что бы вы порекомендовали?

Я уверен, что есть лучшие способы, но поскольку я все еще изучаю java, они казались лучшими сейчас. Кроме того, я не опубликовал никакого кода, потому что я не чувствовал, что это необходимо для вопроса. Я отправлю некоторые, если вам это нужно. Просто спроси, и я буду рад помочь.

(tl; dr) Можно ли сделать какие-либо из 1, 2 или 3 выше, и если да, то как? Спасибо заранее.

+0

FYI вы получаете downvotes, потому что есть десятки, если не сотни, ответов на вопросы о разделении строк в Java на этом сайте. Потратите минутку на Google на свою проблему или посмотрите на список связанных вопросов в правой колонке. Почти наверняка у кого-то еще была ваша проблема. – dimo414

+0

Я занимаюсь этой проблемой в течение последних полутора часов. Я бы не пришел за помощью, если бы мог что-то найти сам. Мне нравится учиться, когда это возможно. – user2009481

ответ

0

Использование .indexOf и найти толчок:

public class splitstring { 
public static void main(String[] args){ 
    String tosplit, part1, part2 = new String(); 
    int ind = 0; 
    tosplit = "push1234"; 
    ind = tosplit.indexOf("push"); 
    part1 = tosplit.substring(ind,ind + 4); 
    part2 = tosplit.substring(ind + 4, tosplit.length()); 
} 
} 
1

Вместо того, чтобы разбивать строки, вы можете использовать регулярные выражения с группами и перебирать соответствующие части (как вы видели, разделительный символ (ы) отбрасывается).

Для # 1, вы могли бы сделать что-то вроде (псевдокод):

regex = (push)(.*) 
    stuff = groups[1] 

Это должно также охватывать # 2, так как он будет соответствовать всем символам после толчка.

Я не совсем уверен, что вы просите в № 3.

Существует регулярное выражение here, если вы не знакомы с регулярными выражениями Java.

Вы также можете взглянуть на StringTokenizer, в котором есть возможность сохранить разделители.

1

Если формат всегда будет толкать * КОЕ * почему вы не используете String.substring()?

Вы можете сделать:

String something = "pushSTUFF".substring(4);

Таким образом, вы всегда будете получать то, что стоит за толчок.

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

Смежные вопросы