gpt4 book ai didi

Java正则表达式: Need Simpler Solution

转载 作者:行者123 更新时间:2023-11-30 03:09:22 26 4
gpt4 key购买 nike

我是正则表达式新手。我有一个名为 encryptId 的字符串(不包含 |),我想在该字符串的每 20 个字符后附加 | 字符,使用Java 中的 encryptId.replace/replaceAll(Regex,Pattern) 函数。但字符串末尾不应该有 \

感谢您的帮助。

编辑:

  1. 我之所以特别想要使用 replacereplaceAll 函数,是因为我必须在 velocity template mananger 中使用它们。 。在那里我们可以使用常见的 String 函数,但无法编写完整的 java 代码。

  2. 我当前的解决方案如下所示

encryptId = encryptId.replaceAll("(.{20})","$1|");
if(encryptId.charAt(encryptId.length() - 1)=='|') {
encryptId = encryptId.substring(0,encryptId.length()-1);
}

我需要删除这个 if 语句,这样它就只是一个字符串函数。

最佳答案

您问如何使用 replaceAll 做到这一点:我说不要。正则表达式并不总是解决字符串操作问题的最佳方法。

您可以通过从 encryptId 中获取 20 个字符 block 并将它们附加到 StringBuilder 来高效地构建新字符串,如果管道不在末尾,则可以选择附加管道字符串的:

String method(String encryptId) {
StringBuilder sb = new StringBuilder(encryptId.length() + encryptId.length() / 20);
for (int i = 0; i < encryptId.length(); i += 20) {
int end = Math.min(i + 20, encryptId.length());
sb.append(encryptId, i, end);
if (end != encryptId.length()) {
sb.append('|');
}
}
return sb.toString();
}

关于Java正则表达式: Need Simpler Solution,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33943325/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com