Java: Разделить строку при обнаружении заглавной буквы

Единственный раз, когда я бы сказал, что прямое манипулирование argv - это плохая идея, это когда приложение меняет свое поведение в зависимости от содержимого argv [0].

Однако, изменение поведения программы в зависимости от argv [0] само по себе является очень плохой идеей , где переносимость является проблемой.

Кроме этого, вы можете обращаться с ним так же, как с любым другим массивом. Как сказал Джонатан, GNU getopt () неразрушающе переставляет список аргументов, я видел другие реализации getopt (), которые вплоть до сериализации и даже хэширования аргументов (полезны, когда программа приближается к ARG_MAX).

Просто будьте осторожны с арифметикой указателя.

43
задан Guido 20 September 2010 в 14:55
поделиться

1 ответ

Простое scala/java предложение, которое не разделяет во всех прописных строках как Нью-Йорк Сити :

def splitAtMiddleUppercase(token: String): Iterator[String] = {
   val regex = """[\p{Lu}]*[^\p{Lu}]*""".r
   regex.findAllIn(token).filter(_ != "") // did not find a way not to produce empty strings in the regex. Open to suggestions.
}

тест с:

val examples = List("catch22", "iPhone", "eReplacement", "TotalRecall", "NYC", "JGHSD87", "interÜber")
for( example <- examples) {
   println(example + " -> "  + splitAtMiddleUppercase(example).mkString("[", ", ", "]"))
}

это производит:

    catch22 -> [catch22]
    iPhone -> [i, Phone]
    eReplacement -> [e, Replacement]
    TotalRecall -> [Total, Recall]
    NYC -> [NYC]
    JGHSD87 -> [JGHSD87]
    interÜber -> [inter, Über]

Изменяют regex для вырезания в цифрах также.

0
ответ дан 26 November 2019 в 22:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: