假设我从needle
开始,忽略了前导空格:
String haystack = "needle#####^&%#$^%...";
String haystackWithSpace = " needle******!@@#!@@%@%!$...";
我想捕获以needle
或^\s*needle.*
开头的任何内容(如果允许使用正则表达式)。有没有一种优雅的方法可以在不调用trim()
的情况下执行此操作?或者有没有办法让正则表达式在这里工作?我希望以下内容成立:
haystackWithSpace.startsWith("needle"); // doesn't ignore leading whitespace
haystackWithSpace.startsWith("^\\s*needle"); // doesn't work
基本上,是否有符合以下条件的字符串s
?:
haystack.startsWith(s) == haystackWithSpace.startsWith(s);
答案 0 :(得分:3)
修剪前导和尾随空格的最简单方法
string=string.trim();
答案 1 :(得分:3)
尝试s.matches("^\\s*" + Pattern.quote("string I'm matching"))
或预编译模式:
Pattern p = Pattern.compile("^\\s*" + Pattern.quote("string I'm matching"));
if (p.matcher(s).matches()) { ... }
答案 2 :(得分:0)
如果您使用^\s+
替换正则表达式""
,则会从字符串的开头删除所有空格。
haystack = haystack.replaceAll("^\\s+", "");