我通过将所有空格替换为“_”来转换字符串,如果实际字符串中有“_”,我将其转换为“\_”。如果有一个像“this is test _string”这样的字符串,结果将是“this_is_test_\_string”,现在我想使用java regex来取回原始字符串“this is test _string”。是否可以使用 java regex 来实现?请帮帮我。
问问题
110 次
1 回答
7
不,不可能取回原始字符串,因为您没有转义反斜杠,这使得它是否"\\_"
来自"_"
或不明确"\\ "
。
如果你做了
- 将所有出现的 替换
"\\"
为"\\\\"
- 将所有出现的 替换
"_"
为"\\_"
- 将所有出现的 替换
" "
为"_"
然后您可以通过在一次从左到右的传递中查找标记"\\\\"
,来反转该过程。"\\_"
"_"
在 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;
}
于 2012-09-13T17:11:31.990 回答