String input = txtInput.getText();
char[] charArray = input.toCharArray();
char[] flipArray = null;
System.out.println(charArray.length);
for (int i = 0; i < charArray.length ; i++) {
System.out.println(charArray[i]);
抱歉,如果代码没有多大意义。
charArray取自JTextField。
所以代码应该做这样的事情。
charArray将是一条消息,上面写着“你无法阅读我的消息!” flipArray将传递“oY uac'n terdam yemssga!e”的信息。
如何编写一个循环,使其成为......
charArray[0] = flipArray[1]
charArray[1] = flipArray[0]
charArray[2] = flipArray[3]
charArray[3] = flipArray[2]
charArray[4] = flipArray[5]
charArray[5] = flipArray[4]
charArray的值取自JTextField
。
我在NetBeans IDE 6.5.1上执行此操作。
答案 0 :(得分:3)
我将退一步看看大局并提出解决问题的方法:
System.out.println(
"012345".replaceAll("(.)(.)", "$2$1")
);
// "103254"
也就是说,给定String s
,s.replaceAll("(.)(.)", "$2$1"))
会返回一个新字符串,其中s
中的每个相邻字符对都会被交换。如果s
具有奇数长度,则最后一个字符仍然未被切换。如果字符串可以包含换行符,则使用(?s)
嵌入式Pattern.DOTALL
。
本质上,模式是..
(即“任意两个字符”),但每个.
被括号括起来创建捕获组,因此捕获的匹配可用于替换。
MATCH: (.)(.)
1 2
REPLACE
WITH: $2$1
在Java正则表达式中,例如替换字符串中的$1
指的是匹配中捕获的组1。
java.util.regex.Matcher.replaceAll
这些是为了更多的教学价值而提供的:
System.out.println(
"abcdefg".replaceAll("(.)(.)", "$1[$2]")
);
// "a[b]c[d]e[f]g"
System.out.println(
"> Regular expressions: now you have two problems!"
.replaceAll("(.)(.)", "$2$1")
);
// " >eRugal rxerpseisno:sn woy uoh va ewt orpboelsm!"
System.out.println(
"> Regular expressions: now you have two problems!"
.replaceAll("(\\w)(\\w)", "$2$1")
);
// "> eRugalr xerpseisnos: onw oyu ahev wto rpboelsm!"
System.out.println(
"Wow! Really?? That's awesome!!!"
.replaceAll("(.)([!?]+)", "$1$1$1$2$2")
);
// "Wowww!! Reallyyy???? That's awesomeee!!!!!!"
答案 1 :(得分:2)
char[] flipArray = new char[charArray.length];
...
charArray[i] = flipArray[i^1];
注意处理奇数编号数组的最后一个元素。
^
是独占或操作符。
没有苦恼:
charArray[i] = flipArray[(i/2)*2 + 1-(i%2)];
%
是模数运算符(注意带负数的奇怪行为)。
您可以使用NIO缓冲区以非常聪明的方式进行操作,但我不会在当天的这个时间尝试。
答案 2 :(得分:2)
胡闹。
for( int i = 0; i < charArray.length; i+= 2 )
{
charArray[i] = flipArray[i+1];
charArray[i+1] = flipArray[i];
}
我假设0,1
转到1,0
,2,3
转到3,2
等等。
我认为这就是你的意思:
String input = ...
StringBuilder builder = new StringBuilder();
for( int i = 0; i < input.length(); i += 2 )
{
//guard against odd text lengths
if( i+1 < input.length() )
{
builder.append( input.charAt(i+1) );
}
builder.append( input.charAt(i) );
}
String flippedText = builder.toString();