我试图取代"?"如果我的字符串以?
开头,则删除它。我测试了这段代码并且它不起作用:
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());
答案 0 :(得分:3)
答案在@Aominè 的评论中,但如何?我认为你必须使用:
if (stringvalue.get().startsWith("?")) {
stringvalue = Optional.of(stringvalue.get().replaceFirst("\\?", ""));
// ^^^^^^^^^^^-------note this
}
或者只是:
stringvalue = Optional.of(stringvalue.get().replaceFirst("^\\?", ""));
//------------^^^^^^^^^^^---------------------------------^
答案 1 :(得分:3)
您也可以使用Optional.map
:
stringvalue = stringvalue.map( (s) -> s.startsWith("?") ? s.replaceFirst("\\?", "") : s );
答案 2 :(得分:2)
Java中的字符串是immutable。所以def run(dirs, img, file_):
for (x, y) in labels:
component = uf.find(labels[(x, y)])
labels[(x, y)] = component
if labels[(x, y)]==0:
Zero[y][x]=int(255)
count=count+1
if count<=43:
continue
elif count>43:
Zeroth = Image.fromarray(Zero)
Zeroth.save(os.path.join(dirs, file_+'Zero.png'), 'png')
return (labels, output_img)
def main():
path='E:/Dataset/1/'
for root, dirs, files in sorted(os.walk(path)):
for file_ in files:
#print (dirs)
# print (files)
full_file_path = os.path.join(root, file_)
img = Image.open(full_file_path)
(labels, output_img) = run(root, img, file_[:-4])
保持原始String值不变。您需要存储替换结果,如下所示:
stringvalue.get().replaceFirst("\\?", "");
另请注意,您可以使用String parameterName = stringvalue.get().replaceFirst("\\?", "");
避免测试字符串是否以^
开始:
?