解析 java/android 中的离散多位整数列表
parsing a list of discrete multidigit integers in java/android
我在 Android 中有代码以 {ABCD EFGH IJKL ...} 的一般形式生成坐标输出。坐标组仅由单个 space 分隔。
我需要访问每个坐标组的最后 2 位数字并将 "s" 附加到每个新创建的 2 位坐标子组的开头。所以如果我有 {1234 5678} 我希望我的解析结果是 "s34" "s78".
我正在考虑执行此操作的最佳方法。有什么建议吗?
编写伪代码。设计数据结构。将伪代码转换为工作代码。也许是这样的:
Scan the string forward 2 characters.
Write 's'.
Write the next 2 characters.
Write a separator (space or newline).
Scan over space.
Repeat loop.
您将必须使用条件来处理开始或至少停止,因为它们与循环的所有其他迭代不太一样。
有多种方法可以完成此操作,这是一种方法:
public class TestRunner {
public static void main(String[] args) {
String sourceString = "{ABCD EFGH IJKL}";
// Remove brackets...
String bracketRemoved = sourceString.replaceAll("\{", "").replaceAll("\}", "");
System.out.println("Removed brackets " + bracketRemoved);
// split by space
String[] chunks = bracketRemoved.split(" ");
for (String s : chunks) {
System.out.println("Processing " + s);
// substring the last 2 characters of a 4 length String
System.out.println("s" + s.substring(2, 4));
}
}
}
首先,我使用正则表达式去除括号,这是一种快速而肮脏的解决方案。
接下来拆分为 space...
然后对于每个 String I 从 2-4 子串并打印前缀 s.
输出是
Removed brackets ABCD EFGH IJKL
Processing ABCD
sCD
Processing EFGH
sGH
Processing IJKL
sKL
请注意,这是非常基本的,只涵盖了一条快乐的道路。如果 s
小于 4,您需要保护自己免受抛出的异常!但你可以做到:)
我在 Android 中有代码以 {ABCD EFGH IJKL ...} 的一般形式生成坐标输出。坐标组仅由单个 space 分隔。
我需要访问每个坐标组的最后 2 位数字并将 "s" 附加到每个新创建的 2 位坐标子组的开头。所以如果我有 {1234 5678} 我希望我的解析结果是 "s34" "s78".
我正在考虑执行此操作的最佳方法。有什么建议吗?
编写伪代码。设计数据结构。将伪代码转换为工作代码。也许是这样的:
Scan the string forward 2 characters.
Write 's'.
Write the next 2 characters.
Write a separator (space or newline).
Scan over space.
Repeat loop.
您将必须使用条件来处理开始或至少停止,因为它们与循环的所有其他迭代不太一样。
有多种方法可以完成此操作,这是一种方法:
public class TestRunner {
public static void main(String[] args) {
String sourceString = "{ABCD EFGH IJKL}";
// Remove brackets...
String bracketRemoved = sourceString.replaceAll("\{", "").replaceAll("\}", "");
System.out.println("Removed brackets " + bracketRemoved);
// split by space
String[] chunks = bracketRemoved.split(" ");
for (String s : chunks) {
System.out.println("Processing " + s);
// substring the last 2 characters of a 4 length String
System.out.println("s" + s.substring(2, 4));
}
}
}
首先,我使用正则表达式去除括号,这是一种快速而肮脏的解决方案。 接下来拆分为 space... 然后对于每个 String I 从 2-4 子串并打印前缀 s.
输出是
Removed brackets ABCD EFGH IJKL
Processing ABCD
sCD
Processing EFGH
sGH
Processing IJKL
sKL
请注意,这是非常基本的,只涵盖了一条快乐的道路。如果 s
小于 4,您需要保护自己免受抛出的异常!但你可以做到:)