Java удаляет двойную черту, но не одну черту - PullRequest
0 голосов
/ 05 мая 2011

Я анализирую числовые данные и иногда получаю отрицательные числа, а когда ничего не доступно, я получаю --

Я создал класс для очистки чисел и передал их через команду:

output = output.replaceAll("\\-", " ");

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

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

Спасибо!

Ответы [ 4 ]

3 голосов
/ 05 мая 2011

Можете ли вы просто заменить "-", чтобы отрицательные числа не были затронуты?

output = output.replaceAll("\\-\\-", " ");

или просто

output = output.replace("--", " ");
1 голос
/ 05 мая 2011

A Сканер может быть более простым способом анализа ввода. Сканер принимает множество различных последовательностей (String, File, PrintStream (например, System.in) и другие типы, которые я считаю) и поможет вам легко разобрать предоставленную последовательность.

В вашем случае сканер позволит вам легко получить числовые значения, используя метод nextInt () :

String fileName = "sample.txt";
Scanner scanner = new Scanner(new File(fileName));

while (scanner.hasNext()) {
    if (scanner.hasNextInt())
        System.out.println(scanner.nextInt());
    else
        System.out.println(scanner.next());
}

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

Моя причина опубликовать это состоит в том, чтобы указать, что могут быть другие способы анализа данных. Возможно, это не совсем то, что вам нужно прямо сейчас, но это может пригодиться в будущем. Это может быть приемлемым вариантом, если / если вы пересмотрите рефакторинг этого кода. Желаем удачи!

1 голос
/ 05 мая 2011

Заменить регулярное выражение двойными черточками:

output = output.replaceAll("\\-\\-", " ");
0 голосов
/ 05 мая 2011

Try output = output.replaceAll("--", " "); или же output=output.replaceAll("-{2}");

Любой из них будет работать, о чем свидетельствует код clojure из REPL. (он использует обработку строк Java).

user => (re-seq # "-" negdata) ("-") user => (re-seq # "- {2}" negdata) ("-") пользователь => (println negdata) --2.0 nil user => (println posdata) -1,0 ноль

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