小编Mal*_*wig的帖子

如何在Java中使用Oracle正则表达式或如何映射它们?

如何在Java中使用Oracle正则表达式来获得相同的结果,或者如何基于Oracle正则表达式构建Java正则表达式.

甲骨文:

declare
  str1 varchar2(50);
begin
  str1 := REGEXP_SUBSTR('500 Oracle Parkway, Redwood Shores, CA', ',[^,]+,');
  DBMS_OUTPUT.PUT_LINE(str1);
end;
Run Code Online (Sandbox Code Playgroud)

结果:

, Redwood Shores,
Run Code Online (Sandbox Code Playgroud)

Java的:

String str1 = null;
Pattern pattern = Pattern.compile(",[^,]+,");
Matcher matcher = pattern.matcher("500 Oracle Parkway, Redwood Shores, CA");
if (matcher.find())
{
    str1 = matcher.group(1);
}
Run Code Online (Sandbox Code Playgroud)

但是这个正则表达式在Java中不起作用.它失败并出现此异常:

Exception in thread "main" java.lang.IndexOutOfBoundsException: No group 1
at java.util.regex.Matcher.group(Matcher.java:538)
at mousemover.Playground.main(Playground.java:16)
Run Code Online (Sandbox Code Playgroud)

也许有一些算法来映射正则表达式?

java regex oracle

5
推荐指数
1
解决办法
379
查看次数

Java Stream .map仅首字母大写

我正在尝试按字母顺序对列表进行排序,并将每个名称的第一个字母大写.

当我执行toUpperCase时,它会将每个字母都大写.如果我不使用打印它.map,我会做(topNames2017.substring(0, 1).toUpperCase() + topNames2017.substring(1))工作正常,但我不知道如何在这里应用它

List<String> topNames2017 = Arrays.asList(
            "Amelia",
            "Olivia",
            "emily",
            "Isla",
            "Ava",
            "oliver",
            "Jack",
            "Charlie",
            "harry",
            "Jacob"
    );


      topNames2017
            .stream()
            .map(String::toUpperCase)
            .sorted()
            .forEach(System.out::println);
Run Code Online (Sandbox Code Playgroud)

java string

5
推荐指数
1
解决办法
1618
查看次数

从浮动到双重铸造

有人可以解释一下为什么这段代码无法编译:

boolean r = (boolean) 0;
Run Code Online (Sandbox Code Playgroud)

为什么这个编译?

double z = (float) 2.0_0+0___2;
Run Code Online (Sandbox Code Playgroud)

我不理解写入浮点数后的数字.

java expression casting boolean compilation

4
推荐指数
1
解决办法
70
查看次数

传递给setInterval的函数范围

在setInterval中调用时,我无法理解函数范围.

当我在setInterval中直接声明一个匿名函数时,如下所示:

let lastEventUUID = "some ID";
const interval = setInterval(async function() {
  console.log("lastEventUUID -> " + lastEventUUID);
  lastEventUUID = "another ID";
}, 1000);
Run Code Online (Sandbox Code Playgroud)

我得到的一切都按预期工作

lastEventUUID -> some ID
lastEventUUID -> another ID
...
Run Code Online (Sandbox Code Playgroud)

但是当我分开宣布我的功能时

async function myFunc(lastEventUUID) {
  console.log("lastEventUUID -> " + lastEventUUID);
  lastEventUUID = "another ID";
}
Run Code Online (Sandbox Code Playgroud)

并将调用设置为setInterval:

let lastEventUUID = "some ID";
const interval = setInterval(myFunc, 1000, lastEventUUID);
Run Code Online (Sandbox Code Playgroud)

lastEventUUID没有在下次通话中更新

lastEventUUID -> some ID
lastEventUUID -> some ID
...
Run Code Online (Sandbox Code Playgroud)

我在这里错过了什么?

javascript setinterval

1
推荐指数
1
解决办法
178
查看次数