我知道在编程中逃避反斜杠.但是我将命令行参数传递给Python程序进行解析.空白是无关紧要的,但是通过命令行,空格确实很重要.所以我试图将除第一个元素之外的所有argv []参数连接到一个字符串然后解析.但是,在for循环中永远不会遇到单个'\'的标记.
命令行参数(注意'\'周围的空格):
((1 * 2) + (3 - (4 \ 5)))
Run Code Online (Sandbox Code Playgroud)
程序:
import sys
string = ""
for token in sys.argv[1:len(sys.argv)]:
print(token)
if "\\" in r"%r" % token:
print("Token with \\ found")
string += token
print(string)
print("done")
Run Code Online (Sandbox Code Playgroud) 我想在访问几个类深的字段(在 get 方法链中)时检查空指针。但是,如果早期的方法之一是null我无论如何都会得到NullPointerException。
这就是我想要检查的内容,尽管它仍然可以获得NullPointerException:
if(x.getLocation().getBuilding().getSolidFuelInd() != null)
pol.setWood_heat_ind(x.getLocation().getBuilding().getSolidFuelInd() ? "Y" : "N");
Run Code Online (Sandbox Code Playgroud)
这是我希望上面的代码表现出的行为:
if(x.getLocation() != null)
if(x.getLocation().getBuilding() != null)
if(x.getLocation().getBuilding().getSolidFuelInd() != null)
pol.setWood_heat_ind(x.getLocation().getBuilding().getSolidFuelInd() ? "Y" : "N");
Run Code Online (Sandbox Code Playgroud)
pol 上的字段是可选的,并且仅当上述 getter 不是时才应设置null。然而,建筑物和位置对象也可能是null,所以现在我必须检查它们是否有效。
有没有一种更短的方法可以像我想要的那样检查上述所有内容?