Java-8-替换可选.of(字符串)开头的“?”字符
我想换一个?字符,如果字符串以?开头,则将其删除?。我测试了此代码,但它不起作用:Java-8-替换可选.of(字符串)开头的“?”字符,java,string,java-8,optional,Java,String,Java 8,Optional,我想换一个?字符,如果字符串以?开头,则将其删除?。我测试了此代码,但它不起作用: Optional<String> stringvalue = Optional.of("?test1=search&test2=ok&test3=hello"); String parameterName = "test1"; if( stringvalue.get().startsWith("?") ){ stringvalue.get().replaceFirst("\
Optional<String> stringvalue = Optional.of("?test1=search&test2=ok&test3=hello");
String parameterName = "test1";
if( stringvalue.get().startsWith("?") ){
stringvalue.get().replaceFirst("\\?", "");
}
System.out.println(stringvalue.get());
字符串是Java语言。所以stringvalue.get.replaceFirst\\;保留原始字符串值不变。您需要按如下方式存储替换结果:
String parameterName = stringvalue.get().replaceFirst("\\?", "");
还请注意,您可以使用^avoiding来测试字符串是否以?开头:
字符串是Java语言。所以stringvalue.get.replaceFirst\\;保留原始字符串值不变。您需要按如下方式存储替换结果:
String parameterName = stringvalue.get().replaceFirst("\\?", "");
还请注意,您可以使用^avoiding来测试字符串是否以?开头:
答案是在评论中的,但如何?我认为你必须使用:
if (stringvalue.get().startsWith("?")) {
stringvalue = Optional.of(stringvalue.get().replaceFirst("\\?", ""));
// ^^^^^^^^^^^-------note this
}
或者只是:
stringvalue = Optional.of(stringvalue.get().replaceFirst("^\\?", ""));
//------------^^^^^^^^^^^---------------------------------^
答案是在评论中的,但如何?我认为你必须使用:
if (stringvalue.get().startsWith("?")) {
stringvalue = Optional.of(stringvalue.get().replaceFirst("\\?", ""));
// ^^^^^^^^^^^-------note this
}
或者只是:
stringvalue = Optional.of(stringvalue.get().replaceFirst("^\\?", ""));
//------------^^^^^^^^^^^---------------------------------^
您也可以使用Optional.map:
stringvalue=stringvalue.map s->s.startsWith?s、 替换第一个\\?,:s 您也可以使用Optional.map:
stringvalue=stringvalue.map s->s.startsWith?s、 替换第一个\\?,:s 您忽略了replaceFirst的结果。字符串是不可变的。每次尝试修改它都会产生一个新的字符串对象,并进行修改。您忽略了replaceFirst的结果。字符串是不可变的。每次尝试对其进行修改都会产生一个新的字符串对象,并进行相应的修改。作为补充说明,s.substring1比s.replaceFirst\\?,,更简单、更有效地删除第一个字符。除非使用s.replaceFirst^\\?,否则要去除条件。作为旁注,s.substring1是一种比s.replaceFirst\\?,更简单、更有效的删除第一个字符的方法。除非使用s.replaceFirst^\\?,以摆脱条件。