Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java-8-替换可选.of(字符串)开头的“?”字符_Java_String_Java 8_Optional - Fatal编程技术网

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^\\?,以摆脱条件。