Java从字符串

时间:2016-06-01 15:15:59

标签: java string substring

给定一个随机字符串,我希望能够从我的字符串(+-*/)中提取某些字符,一个接一个

假设字符串为wejri+234-wer*324sdf/ 如何检索这4个操作符?

如果我必须在这些运算符之间提取所有内容,我会使用String.split("\\+|\\-|\\*|\\/");,但如果我必须反过来这样做,我将如何实现呢?

这些运营商之间的字符数量可能会有很大差异。

2 个答案:

答案 0 :(得分:3)

您可以使用正则表达式删除除+, -, *, /之外的所有字符:

String text = "wejri+234-wer*324sdf/";
String res = text.replaceAll("[^+\\-\\*/]", "");   // - and * need to be escaped
// > res = "+-*/"

答案 1 :(得分:2)

您可以使用Guava的CharMatcher:

System.out.println(
  CharMatcher.JAVA_LETTER_OR_DIGIT
             .and(CharMatcher.ASCII)
             .removeFrom("wejri+234-wer*324sdf/"));

输出:

  

+ - * /

或者,如果你想使用正则表达式,我会选择\w字符类:

System.out.println("wejri+234-wer*324sdf/".replaceAll("\\w+",""));

更新:CharMatcher.JAVA_LETTER_OR_DIGIT已被弃用,并且没有规范替换,但您可以轻松自行推送:

private static final CharMatcher JAVA_LETTER_OR_DIGIT = 
    CharMatcher.forPredicate(Character::isJavaIdentifierPart)
               .precomputed();

请注意,您希望将其存储在常量中,因为预计算是一项适度昂贵的操作,并且您不希望每次都这样做。