如果我有一个名为.txt
的{{1}}文件中包含animals
等文件,另一个文件名为fishfroggoat
,其中包含以下内容:
owners
我怎么能将宠物与其主人配对?我很确定HashMap在这里会很好,但是我被卡住了。我将动物文本放入一个字符串中,但我不知道如何将其分解为4个字符。
任何帮助都会很棒。
抱歉,我没有添加任何代码,但多亏了你们的帮助(特别是Ted Hopps),我把它解决了,更重要的是,理解它。 : - )
答案 0 :(得分:1)
有各种方法。最直接的方法是使用substring
方法将其拆分:
String animals = "fishfroggoat";
String fish = animals.substring(0, 4);
String frog = animals.substring(4, 8);
String goat = animals.substring(8); // or (8, 12)
如果你有一个任意长的四字符动物列表,你可以这样做:
String animals = "fishfroggoatbear";
int n = animals.length() / 4;
String[] animalArray = new String[n];
for (int i = 0; i < n; ++i) {
animalArray[i] = animals.substring(4*i, 4*i + 4);
}
您可以使用split
分割宠物/所有者字符串:
String rawData = "fish:jane";
String[] data = rawData.split(":");
String pet = data[0];
String owner = data[1];
答案 1 :(得分:0)
使用字符串拆分,如下所示。
String msg = fish:jane; msg.split( “:”)
然后它将使数组分开“:”。
答案 2 :(得分:0)
这就是你将字符串分成一行只包含4个字符的方法:
String[] animals = input.split("(?<=\\G....)");
这可能看起来像黑魔法,所以我会试着揭开它的神秘面纱。欢迎来到正则表达的黑暗艺术......
String.split()
方法将每次匹配的字符串拆分为指定的正则表达式。那么让我们看一下正则表达式:
(?<=\\G....)
(?<=regex)
是正则表达式的“正面看法”,意味着输入中字符之间的点之前的字符(因为后面看是零宽度)必须要求正则表达式。\G
(编码为\\G
作为java String常量)表示“上一次匹配的开始”,但最初也匹配输入的开始。....
匹配任意4个字符。因此,当用英语表示时,正则表达式(?<=\\G....)
表示“在每个字符之后”。
如果有人有兴趣,删除\G
并拆分(?<=\....)
会导致它在第4个=之后拆分每个字符 - 它只是意味着“前面有4个字符” - 您需要\G
才能找到4个新字符。
这是一些测试代码:
public static void main(String[] args) throws Exception {
String input = "fishfroggoatbear";
String[] animals = input.split("(?<=\\G....)");
System.out.println(Arrays.toString(animals));
}
输出:
[fish, frog, goat, bear]