gpt4 book ai didi

Java:如何根据非字母分隔符反转字符串?

转载 作者:行者123 更新时间:2023-12-01 17:41:08 25 4
gpt4 key购买 nike

如何根据非字母分隔符反转字符串?我怀疑我的正则表达式可能是问题所在。

String fileContent = "Joe'); MAKE TEST random;--";
String[] splitWords = fileContent.split("[^a-zA-Z0-9']+");

StringBuilder stringBuilder = new StringBuilder();
for (String word : splitWords) {
int idx = fileContent.indexOf(word, stringBuilder.length());
String delim = fileContent.substring(stringBuilder.length(), idx);
stringBuilder.append(delim);

StringBuilder output = new StringBuilder(word).reverse();
stringBuilder.append(output);
}
return stringBuilder.toString();

当前输出:'eoJ); EKAM TSET modnar

所需输出:eoJ'); EKAM TSET modnar;--

最佳答案

您不需要为此使用正则表达式。看来您想反转仅是字母或数字的字符。然后你可以这样做 - 获取字符数组的开始和结束索引,在其中找到字符是字母或数字,然后就地反转。然后返回一个新的字符串,其中字符反转。

private static void reverseWords(char[] c) {
int start = 0, end = c.length;
while ( start < end ) {
int pre = start;
while ( start < c.length && Character.isLetterOrDigit(c[start]) )
start++;
if ( pre < start )
reverseWord(c, pre, start-1);
start++;
}
}

private static void reverseWord(char[] c, int start, int end) {
while ( start < end ) {
char temp = c[start];
c[start] = c[end];
c[end] = temp;
start++;
end--;
}
}

您可以测试此代码 here

关于Java:如何根据非字母分隔符反转字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61109782/

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