小编Arv*_*ash的帖子

DateTimeFormatter 的模式问题

我正在编写一个股票程序,它(到目前为止)通过这样的请求从“Markit on Demand”获取数据:

http://dev.markitondemand.com/Api/v2/Quote/xml?symbol=aapl

这将返回 xml 中的数据,以及股票的各种度量(符号、名称、最后价格、变化、时间戳等)。

我在 Java 8 中创建 DateTimeFormatter 来制作时间戳时遇到问题。

时间戳的一个示例:

Fri Jul 18 15:59:00 UTC-04:00 2014

到目前为止,我拥有的模式如下:

EEE MMM d HH:mm:ss OOOO yyyy

我相信你们中的一些人可以发现,我在偏移方面遇到了麻烦。

从文档:

偏移量 X 和 x:这根据模式字母的数量格式化偏移量。一个字母只输出小时,例如“+01”,除非分钟不为零,在这种情况下也会输出分钟,例如“+0130”。两个字母输出小时和分钟,没有冒号,例如“+0130”。三个字母输出小时和分钟,带一个冒号,例如“+01:30”。四个字母输出小时和分钟以及可选的秒,没有冒号,例如“+013015”。五个字母输出小时和分钟以及可选的秒,带有冒号,例如“+01:30:15”。六个或更多字母抛出 IllegalArgumentException。当要输出的偏移量为零时,模式字母 'X'(大写)将输出 'Z',而模式字母 'x'(小写)将输出 '+00', '

Offset O:根据模式字母的数量格式化本地化的偏移量。一个字母输出本地化偏移量的缩写形式,即本地化偏移量文本,例如“GMT”,小时不带前导零,可选的两位数分钟和秒(如果非零)和冒号,例如“GMT+8” '。四个字母输出完整形式,它是本地化的偏移文本,例如'GMT,带有两位数的小时和分钟字段,可选的第二个字段(如果非零)和冒号,例如'GMT+08:00'。任何其他字母计数都会引发 IllegalArgumentException。

偏移 Z:这会根据模式字母的数量格式化偏移量。一、二或三个字母输出小时和分钟,不带冒号,例如“+0130”。当偏移量为零时,输出将为“+0000”。四个字母输出局部偏移的完整形式,相当于Offset-O的四个字母。如果偏移为零,则输出将是相应的本地化偏移文本。五个字母输出小时、分钟,如果非零,可选秒,带冒号。如果偏移为零,则输出“Z”。六个或更多字母抛出 IllegalArgumentException。

// String rawDate = Fri Jul 18 15:59:00 UTC-04:00 2014   
DateTimeFormatter PARSER_PATTERN = DateTimeFormatter.ofPattern("EEE MMM d HH:mm:ss 'UTC'XXX yyyy");
ZonedDateTime timeStamp = ZonedDateTime.parse(rawDate, PARSER_PATTERN);
Run Code Online (Sandbox Code Playgroud)

这有效,但我很好奇为什么(代替'UTC'XXX)OOOO不起作用。

java datetimeoffset java-8 java-time datetimeformatter

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

ArrayList,双包含

private static boolean moreThanOnce(ArrayList<Integer> list, int number) {
    if (list.contains(number)) {
        return true;
    }
    return false;
}
Run Code Online (Sandbox Code Playgroud)

如何list.contains检查是否在列表中多次找到该号码?我可以用for循环创建一个方法,但我想知道是否可以使用.contains. 感谢帮助!

java arraylist

6
推荐指数
2
解决办法
395
查看次数

负前瞻后跟空格

我无法弄清楚反向否定查找。假设我有一个文本

qwe  abc
qwe abc
abc
Run Code Online (Sandbox Code Playgroud)

我想找到所有abc没有在后面的qwe,后面可能有任意数量的空格。

(?<!qwe)\s*?(abc)
Run Code Online (Sandbox Code Playgroud)

匹配一切。我认为它类似于“匹配任意数量的空格,abc如果qwe前面没有空格”

我也试过

qwe|(abs) 
Run Code Online (Sandbox Code Playgroud)

方法,但它对我不起作用。尽管对于我不希望 match 起作用的情况,组是空的,但我真的不知道如何将它与re.sub函数(需要)一起使用。即使组为空,也会re.sub替换字符串。

环境:python 3

python regex python-3.x

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

获取字符“前两次”出现之间的子字符串

我有一个String

 String thestra = "/aaa/bbb/ccc/ddd/eee";
Run Code Online (Sandbox Code Playgroud)

在我的情况下,每次刺痛,至少都会出现两次斜线。

我得到类似下面的内容,它是字符串中/aaa/字符的“前两次出现”之间的子字符串。/

 System.out.println("/" + thestra.split("\\/")[1] + "/");
Run Code Online (Sandbox Code Playgroud)

它解决了我的目的,但我想知道是否还有其他优雅且干净的替代方案?

请注意,我需要在 周围使用两个斜杠(前导和尾随)aaa。IE/aaa/

java string substring java-8

6
推荐指数
2
解决办法
1507
查看次数

使用正则表达式捕获特定字符串

我有多个板。在我的 bash 脚本中,我想使用正则表达式捕获我的根文件系统名称。当我做 a 时cat /proc/cmdline,我有这个:

BOOT_IMAGE=/vmlinuz-5.15.0-57-generic root=/dev/mapper/vgubuntu-root ro quiet splash vt.handoff=7
Run Code Online (Sandbox Code Playgroud)

我只想选择/dev/mapper/vgubuntu-root

到目前为止我已经成功地root=/dev/mapper/vgubuntu-root使用这个命令

\broot=[^ ]+
Run Code Online (Sandbox Code Playgroud)

regex linux grep sed

6
推荐指数
3
解决办法
179
查看次数

在所有多行中将整列替换为新值

我的文件中有以下几行

$ cat test.txt
69|1074330570|1,sip:+121345633210x3Bverstat=TN-Validation-Passed|tel:+12134565534|0
69|1077822111|2,;tel:+2223120011~sip:+2223120051@vzpps.com;|sip:+13123120022@vzpps.com|0
69|1077988012|1,sip:+121510016070x3Bverstat=TN-Validation-Passed|tel:+136965339510x3Bnpd|0
Run Code Online (Sandbox Code Playgroud)

我想用电话号码替换文件中的第三列和第四列,如下所示:

69|1074330570|2134563321|2134565534|0
69|1077822111|2223120011|3123120022|0
69|1077988012|2151001607|3696533951|0
Run Code Online (Sandbox Code Playgroud)

好的部分是所有文件在第三列和第四列中都会有一个“+”。现在困难的部分是,有时我们会得到第一行第三列中注意到的 11 位数字 (121345633210),有时“+”后没有添加“1”。因此,如果加号后面有 1,则排除 1。否则,从“+”号后面开始长度。同样,如果有 11 位数字,只需子串 10。此外,如果有超过 1 个数字(如第 2 行),我只需要选取“+”号后面的第一个数字,例如 2223120011,而不是 2223120051。

我尝试了以下方法

awk -F"|"  'BEGIN {FS="+"}{print substr($3,2,10)}' test.txt
Run Code Online (Sandbox Code Playgroud)

但它为第二行提供了不正确的值,因为它需要在“+”号之后开始。

regex linux awk replace substr

6
推荐指数
2
解决办法
150
查看次数

使用 DateTimeFormatter ofPattern 解析日期

我正在尝试使用 解析包含日期和时间的字符串java.time.format.DateTimeFormatter(我的最终目标是将此字符串中的日期转换为java.time.LocalDate)。

尝试解析日期时,我不断收到 DateTimeParseExceptions。有人可以帮忙吗?

日期的格式为“2015-07-14T11:42:12.000+01:00”。

DateTimeFormatter f = DateTimeFormatter.ofPattern("yyyy-MM-ddTHH:mm:ss.SSSZ");
LocalDateTime temp = LocalDateTime.ofInstant(Instant.from(f.parse(this.dateCreated)), 
                 ZoneId.systemDefault());
LocalDate localDate = temp.toLocalDate();
Run Code Online (Sandbox Code Playgroud)

我在 ofPattern 中尝试了不同的变体,例如尝试通过用单引号将 T 括起来(如上所述)来转义 T,并对 . 我试过同时逃避两者。

冒号也需要转义吗?

感谢您对此的任何帮助。

java parsing datetime-format date-parsing datetimeformatter

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

在Spring Boot应用程序的应用程序属性文件中使用Jenkins变量

我有一个Spring Boot应用程序,可从Vault中提取秘密,我想在Spring Boot应用程序的应用程序属性文件中使用这些秘密。

def VAR = new groovy.json.JsonSlurper().parseText(secret)[0].VARKEY
if(VAR != ''){
    echo "Vault Secret pulled Successfully pass is "+VAR
}else{
    echo "Vault Secret Not Found"
}
Run Code Online (Sandbox Code Playgroud)

上面的代码成功设置了变量VAR,然后如何使用VAR在Spring Boot应用程序的应用程序属性文件中设置某些值?

谢谢

java groovy spring jenkins spring-boot

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

向所有现有用户添加自定义属性

我已经有一个正在运行的 Keycloak 实例,其中有很多注册用户。如何在不手动操作的情况下向所有用户添加新的自定义属性(具有空值)?

keycloak keycloak-services

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

将 servlet 4.0.1 升级到 servlet 5.0

我正在将 servlet 4.0.1 升级到 servlet 5.0。我正在使用以下 servlet 4.0.1 的 Maven 依赖项

<dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>4.0.1</version>
        <scope>provided</scope>
</dependency> 
Run Code Online (Sandbox Code Playgroud)

当我升级到 servlet 5.0 时,我看到有一个新术语“Jakarta”,并且 servlet5 附带具有以下 maven 依赖项的 Jakarta API。

<dependency>
  <groupId>jakarta.servlet</groupId>
  <artifactId>jakarta.servlet-api</artifactId>
  <version>5.0.0</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

因此,我尝试在互联网上搜索但找不到以下问题

  1. 请解释一下这个新术语“雅加达”,比如它是如何出现的?
  2. 这是使用 Jakarta API 升级 servlet 5.0 的唯一方法吗?我们可以使用旧的“javax.servlet-api”吗?
  3. 我明白了,4.0 版本中也有 Jakarta,但我们没有使用它。它与 servlet 4 没有任何依赖性吗? https://mvnrepository.com/artifact/jakarta.servlet/jakarta.servlet-api
  4. 将 servlet 4.0 升级到 servlet 5.0 还需要什么?

还请建议任何文档以供参考(如果有)

java eclipse servlet-4 jakarta-ee

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