gpt4 book ai didi

java - 使用java正则表达式

转载 作者:行者123 更新时间:2023-12-01 07:35:46 24 4
gpt4 key购买 nike

我通过将所有空格替换为“_”来转换字符串,如果实际字符串中有“_”,我将其转换为“\_”。如果有一个像“this is test _string”这样的字符串,结果将是“this_is_test_\_string”,现在我想使用java正则表达式来取回原始字符串“这是测试_string”。是否可以使用java正则表达式来实现?请帮帮我。

最佳答案

不,不可能取回原始字符串,因为您没有转义反斜杠,这使得 "\\_" 是否来自 "_" 变得不明确或“\\”

如果你做到了

  1. 将所有出现的 "\\" 替换为 "\\\\"
  2. 将所有出现的 "_" 替换为 "\\_"
  3. 将所有出现的 "" 替换为 "_"

然后您可以通过查找标记 "\\\\""\\_""_" 来反转该过程> 从左到右单次传递。

在Java中,第一个转换是

stringToEncode.replace("\\", "\\\\").replace("_", "\\_").replace(" ", "_")

对偶是

String decode(String stringToDecode) {
int n = stringToDecode.length();
StringBuilder out = new StringBuilder(n);
int decoded = 0;
for (int i = 0; i < n; ++i) {
switch (stringToDecode.charAt(i)) {
case '\\':
out.append(stringToDecode, decoded, i);
decoded = ++i;
break;
case '_':
out.append(stringToDecode, decoded, i).append(' ');
decoded = i+1;
break;
}
}
return decoded != 0
? out.append(stringToDecode, decoded, n).toString()
: stringToDecode;
}

关于java - 使用java正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12411400/

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