我正在尝试从 XML 文件解析/提取数据并检索必要的数据。
例如:
<about>
This is an XML file
that I want to
extract data from
</about>
<message>Hello, this is a message.</message>
<this>Blah</this>
<that>Blahh</that>
<person>
<name>Jack</name>
<age>27</name>
<email>jack@gmail.com</email>
</person>
Run Code Online (Sandbox Code Playgroud)
我在获取<about>标签中的内容时遇到问题。
这是我到目前为止:
(<\w*>)[\s*]?([\s*]?.*)(<\/\w*>)/m
Run Code Online (Sandbox Code Playgroud)
我只是想提取标签名称和内容,这就是为什么我在那里有括号。即($tag = $1) =~ s/[<>]// 获取标签名称,$tagcontent = $2 获取标签的内容。我正在使用\s空白字符(空格、制表符、换行符),?因为它可能会出现也可能不会出现*。
我正在通过http://www.regexe.com/进行测试,但匹配失败。
任何帮助表示赞赏。提前致谢!
查看 Java8 doc for OptionalInt,似乎OptionalInt无法通过设置新值或清空现有值来重用。此外,JavaDoc 仅展示了通过调用静态方法来初始化 OptionalInt 的两种方法 - 看起来像一个不可变的对象。
真的不能重复使用吗?
想象一个批处理,其中要处理的数据由一个 int 原语组成,它可以是可选的。对于每一行(假设是数百万行)OptionalInt,必须创建一个新对象。目标是避免不必要的对象实例化和额外的垃圾收集。所以我宁愿自己重新实现它并避免使用 Java8 实用程序类OptionalInt?
如何String从Optional<String>usingifPresent和 avoid返回值NullPointerException?
例子:
public String longestName() {
Optional<String> longName = someList.stream().reduce((name1, name2) -> name1.length() > name2.length() ? name1 : name2);
// If I do not want to use following
// return longName.isPresent() ? longName.get() : "not present";
// Can I achieve this using longName.ifPresent or longName.orElse("not present");
}
Run Code Online (Sandbox Code Playgroud) 我正在使用 Apache Spark 的 Scala API 开发一些代码,并且我正在尝试巧妙地解决RDDs之间包含一些Option[T].
假设我们有以下列表
val rdd: RDD[(A, Option[B])] = // Initialization stuff
Run Code Online (Sandbox Code Playgroud)
我们想应用一个转换rdd来获得以下内容
val transformed: RDD[(B, A)]
Run Code Online (Sandbox Code Playgroud)
对于所有Option[B]评估为 的 s Some[B]。我发现这样做的最好方法是应用以下转换链:
val transformed =
rdd.filter(_.isDefined)
.map { case (a, Some(b)) => (b, a) }
Run Code Online (Sandbox Code Playgroud)
我知道如果我使用的是简单的 Scala,List我可以使用以下collect方法:
val transformed = list.collect {
case (a, Some(b)) => (b, a)
}
Run Code Online (Sandbox Code Playgroud)
如我的这个SO question 所述。
RDD改用Spark s,我有哪种选择?
我正在尝试学习Java 8 功能 Optional。我对 Optional.orElse 的工作方式感到困惑。这是我尝试过的:
public class OptionalsExample {
public static void main(String[] args) {
Name userName = new Name();
userName.setName("John Doe");
Optional<Name> optionalName = Optional.ofNullable(userName);
optionalName.ifPresent(
(Name value) -> {
Optional<String> optionalNameString = Optional.ofNullable(value.getName());
optionalNameString.ifPresent(name -> System.err.println("Name is: " + optionalNameString.get()));
}
);
}
private static void printError() {
System.err.println("No Name present");
}
}
Run Code Online (Sandbox Code Playgroud)
我担心的是,如果设置了 name 一切正常,但是当没有设置 name 时,我想执行orElse。我想在评论时做点什么
userName.setName("John Doe");
Run Code Online (Sandbox Code Playgroud)
喜欢打印 No Name Found
我怎样才能做到这一点?
TIA
我正在使用 Swift,我想知道如何在 1 行代码中实现这一点:
If a != nil, myVariable = a
else if a == nil, myVariable = b
Run Code Online (Sandbox Code Playgroud)
我需要这样做,以便它适合
var myVariable = a {
didSet{
//Do something
}
}
Run Code Online (Sandbox Code Playgroud)
有没有办法在 1 行中做到这一点,所以我不必在其他地方更改它并触发 didSet{}?
像这样的东西:
if var myVariable = a
else myVariable = b {
didSet{
//Do something
}
}
Run Code Online (Sandbox Code Playgroud)
或者...
var if a != nil {myVariable = a}
else {myVariable = b} {
didSet{
//Do something
}
}
Run Code Online (Sandbox Code Playgroud)
我知道这可能需要一些时间来理解我的意思,我尽力解释它。
编辑 ---> 编译器说:
nil 合并运算符 '??' 的左侧 具有非可选类型 '[[Bool]]',因此从不使用右侧
和 …
这不起作用:
struct Type {
virtual bool func(const std::string& val) const noexcept = 0;
}
// in main
optional<Type> = some_function_returning_optional_type();
Run Code Online (Sandbox Code Playgroud)
并失败并显示错误消息:
error: cannot declare field 'std::experimental::fundamentals_v1::_Optional_base<Type, false>::<anonymous union>::_M_payload' to be of abstract type 'Type'
Run Code Online (Sandbox Code Playgroud)
将 更改Type为具有非纯函数有效,但在这种情况下不合适,因为Type在我的代码中不能有 的实例,只有从它继承的类才能存在。
我有一个Optional并且想要调用一个带有'内容的函数(如果存在),如果没有则抛出.问题是map不会采用无效方法.
File file;
//...
Optional maybeFile = Optional.ofNullable(file);
//..
maybeFile
.map(f -> writeTo(f, "stuff")) //Compile error: writeTo() is void
.orElseThrow(() -> new IllegalStateException("File not set"));
Run Code Online (Sandbox Code Playgroud)
如何在保持writeTo无效的同时实现这一点?
我有一组按顺序完成的操作,但如果中间序列返回"null",我想提前中止操作(跳过后续步骤).
我编造了这样其给定的输入参数的功能,执行对Redis的几个操作,如果它存在,会返回一个产品.由于其中一个中间请求可能返回空值,因此完整的操作可能会"失败",并且我希望将之后发生的不必要的步骤短路.
这里的筑巢变得疯狂,我想让它更清晰.是否有适当的"功能"方式来执行此类"if/else"短路?
def getSingleProduct(firstSku: String): Option[Product] = {
val jedis = pool.getResource
val sid: Array[Byte] = jedis.get(Keys.sidForSku(firstSku, sectionId, feedId).getBytes)
Option(sid).flatMap {
sid: Array[Byte] =>
Option(jedis.get(Keys.latestVersionForSid(sectionId, feedId, sid))) flatMap {
version: Array[Byte] =>
Option(Keys.dataForSid(sectionId, feedId, version, sid)) flatMap {
getDataKey: Array[Byte] =>
Option(jedis.get(getDataKey)) flatMap {
packedData: Array[Byte] =>
val data = doSomeStuffWith(packedData)
Option(Product(data, "more interesting things"))
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud) 我的意思不是返回一个Optional值,我的意思是说一个方法:
public void someMethod() {
Optional<Obj> obj = someService.getObj();
if (obj.isPresent()) {
....
} else {
log.info(xxxx);
return;
}
xxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxx
other codes
}
Run Code Online (Sandbox Code Playgroud)
是否可以使用Optional.ifPresent方法编写它?我的意思是,避免使用if isPresent东西。
非常感谢。
==更新:
似乎JDK9中的PresentOrElse可以做到这一点,但是JAVA8中有什么方法可以做到这一点?
我不需要此方法返回任何值,但是如果Optional不存在,我想记录一些内容。