【问题标题】:String Java find spacesString Java 查找空格
【发布时间】:2013-01-09 01:44:15
【问题描述】:

我在一个字符串上有一个短语,我想将它拆分为其他 5 个或更多字符串而不带空格。 例如:

String test = "hi/ please hepl meok?";

我想要:

String temp1 = "hi/";
String temp2 = "please";
String temp3 = "help";
String temp4 = "meok?";

我不想将它添加到数组中,因为我想将 temp4 拆分为另外 3 个字符串。 例如

->>拆分后的temp4:

temp4 = "me"
temp5 = "ok"
temp6 = "?"

问这个问题是因为我想编写一个方法来解码带有一些解码器的 LinkedHashMap 集中的字符串短语。谢谢。如果我的方法不对,请指导我! :)

【问题讨论】:

  • 查看标准 API 中的 String.split() 方法。使用正确的参数值,您可以一次调用完成所有拆分,而无需进一步手动拆分单个字符串。
  • 在你拆分temp4的例子中,你怎么知道在哪里拆分呢?
  • @Code-Guru 它试过了,我的代码是:` String temp = codedText; temp.split(codedText); System.out.println(temp.split(codedText));` 我将使用 substring 方法来检查 Set
  • 你这样做的时候发生了什么? (您可能想阅读我链接到的文档。一方面,您没有为您在原始帖子中描述的内容发送正确的参数值。)
  • 在我的控制台上来自 println 我有这个 :java.lang.String;@2554aed9 只有他的内存地址。 @代码大师

标签: java string linkedhashmap


【解决方案1】:

我不想将它添加到数组中,因为我想将 temp4 拆分为 3 个以上的字符串。例如

使用String#split 拆分字符串,然后将结果数组的各个部分分配给您的各个变量:

String[] parts = theOriginalString.split(" ");
String temp1 = parts[0];
String temp2 = parts[1];
String temp3 = parts[2];
String temp4 = parts[3];
String temp5 = parts[4];

我觉得让这些单独的命名变量的想法有点可疑,但我可以看到用例 - 例如,如果您要着手处理一堆有用的名称使代码更清晰的逻辑。

【讨论】:

  • 我不想要数组的原因是这个阶段可以是 10char 长或 20。我不知道数组的最大数量,所以我不知道在哪里停止。我认为arraylist 是字符串数组b/c 的另一种方式,它具有arraylist.size() 所以它将是最大值。 @T.J。克劳德
  • @John 你不需要知道数组的大小。 String.split() 为您创建一个大小正确的数组。
  • @John: "我不想要一个数组的原因是这个阶段可以是 10char 长或 20。我所以我不知道数组的最大数量,所以我不知道在哪里停止。” 那么你肯定不可能声明变量并且你必须使用数组,或List,或类似的。如果您担心会得到一个过大的数组,您可以改用limited version of String#split
  • @T.J.克劳德 好的,但我需要知道一些事情。 String[] 是否有一个方法可以返回这个数组的最大数量?例如 String[] 部分 = theOriginalString.split(" ");像 parts.size() 什么的? part.maxCels() ?
  • @John: Arrays have a length property 告诉你它们有多长。如果数组的length3,则它具有元素012
【解决方案2】:

根据你的字符串,split() 可以解决问题

String tokens[] = test.split(" ");

tokens[0] 将是 "hi/",tokens[1] 将是 "please" 等等。

编辑你将首先将你的字符串存储在一个数组中,在任何情况下使用 split 时,如果你想单独循环它们,请使用 StringTokenizer。

 StringTokenizer st = new StringTokenizer(test);
 while (st.hasMoreTokens()) {
     System.out.println(st.nextToken());
 }

【讨论】:

  • 问题明确表示“没有数组”。这是否有意义,谁知道呢,但仍然 - 这并不能回答问题!
  • @us2012 如果“我不能使用 XXX”的要求是因为作业限制,那么我会同意,因为这些限制旨在帮助学习语言的特性。不过,在这方面,避免数组的要求似乎不是这种类型之一。
猜你喜欢
  • 1970-01-01
  • 2018-12-11
  • 1970-01-01
  • 2018-11-15
  • 1970-01-01
  • 1970-01-01
  • 2016-02-05
  • 2019-12-07
  • 1970-01-01
相关资源
最近更新 更多