【问题标题】:How do I remove trailing characters after Question mark(?) in a String?如何删除字符串中问号(?)之后的尾随字符?
【发布时间】:2015-10-09 11:28:53
【问题描述】:

我需要从下面的字符串中删除 2 之后的尾随字符

String a = "12?34567";

我预期的字符串输出应该是 12

我尝试了下面的 replaceAll 方法。但它没有用。

a.replaceAll("\\?+$", ""));

请帮忙

【问题讨论】:

  • 如果有两个或多个问号会怎样?您要从第一个还是最后一个中删除数据?您当前的表达式缺少问号和行尾之间的部分。
  • 使用indexOfsubstring
  • 我需要从第一个问号出现中删除数据。
  • 您想保留问号还是将其删除?
  • 应该去掉问号

标签: java regex string replaceall


【解决方案1】:

不要使用正则表达式,而是使用 indexOf:

final int index = orig.indexOf('?');
return index == -1 ? orig : orig.subString(0, index);

如果要保留问号,只需在上面的子字符串操作中将index加1即可。

【讨论】:

  • 知道了!感谢您的宝贵时间!
【解决方案2】:

您忘记在正则表达式中添加数字,您只是在检查一个或多个问号实例。这应该可以满足您的要求。

String a = "12?34567";
System.out.println(a.replaceAll("\\?\\d*$", ""));

如果您只想在评论中所述的第一个问号之后删除它们,您可以简单地这样做

String a = "12??1?1231";
System.out.println(a.replaceAll("\\?.*", ""));

【讨论】:

  • 条件没有说明? 后面只有数字。但是\\?.*$ 应该这样做。
  • @ClasG 我只是按照他的例子来调整自己,但是将\\d* 更改为.* 应该不难。
【解决方案3】:
    String a = "12?34567";
    String[] split = a.split("\\?");
    System.out.println(split[0]);

【讨论】:

    猜你喜欢
    • 2019-01-10
    • 1970-01-01
    • 2015-04-03
    • 1970-01-01
    • 2011-08-12
    • 2013-07-29
    • 2018-06-05
    • 2012-05-20
    相关资源
    最近更新 更多