【发布时间】:2016-04-03 00:25:35
【问题描述】:
我要处理一些字符串,我应该把它们放在左边N个位置来组织字符串。
这是我的代码:
private String toLeft() {
String word = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; // Example
byte lpad = 2; // Example
StringBuilder sb = new StringBuilder();
for (int i = 0; i < word.length(); i++) {
sb.append((char) (word.charAt(i) - lpad));
}
return sb.toString();
}
它适用于不必多次移动的输入...
所以,问题是当要移动的位置数 N 有点大(如 10)时,它返回非字母,如下例所示,我该怎么做才能防止它?
例如:ABCDEFGHIJKLMNOPQRSTUVWXYZ 如果我将每个字符向左移动 10 个位置,则返回 789:;<=>?@ABCDEFGHIJKLMNOP,而它必须返回 QRSTUVWXYZABCDEFGHIJKLMNOP。
一些输入及其预期输出:
VQREQFGT // 2 positions to left == TOPCODERABCDEFGHIJKLMNOPQRSTUVWXYZ // 10 positions to left == QRSTUVWXYZABCDEFGHIJKLMNOPLIPPSASVPH // 4 positions to left == HELLOWORLD
【问题讨论】:
-
你得到的是 Z 之后的字符。你需要做一些加/减/模运算来得到正确的数字。见here