当前位置: 首页 > 知识库问答 >
问题:

StringTokenizer在错误的分隔符上断开字符串

窦彦君
2023-03-14
import java.util.StringTokenizer;

public class Test {
    public static void main(String[] args) {
        String str = "key1@@@@@val1#####key2@@@@@val2#####key3@@@@@val3#####key4@@@@@val4###val4###val4#####key5@@@@@val5";

        StringTokenizer st = new StringTokenizer(str,"#####");
        while(st.hasMoreTokens()){
            System.out.println(st.nextElement());
        }
    }

}

VAL4

VAL4

key5@@@@@val5

我知道我可以通过使用其他分隔符而不是###来做到这一点,但我想知道这背后的确切原因。

共有1个答案

湛宏旷
2023-03-14

StringTokenizer根据提供的Delim参数中的每个字符进行拆分。

在您的示例中,生成一个StringTokenizer,它只根据'#'进行拆分

来自StringTokenizer的java文档(String,String)

 类似资料:
  • 如果使用带有单个参数的第一个StringToknenizer构造函数并编写示例程序,结果是和12个令牌。它返回没有任何空格的整个句子。我明白这是怎么回事。 如果使用带有两个参数的第二个构造函数,我的测试程序将得到每个单词有空格,但没有逗号,只有两个标记。我认为它应该同时将空格和逗号作为标记分隔符计算,但它将逗号之前的所有内容作为1标记计算,将逗号之后的所有内容作为1标记计算。这部分让我很困惑。 我

  • 问题内容: 已修改。 此代码有什么问题?我得到以下错误。 您的SQL查询中似乎有一个错误。下面的MySQL服务器错误输出(如果有的话)也可以帮助您诊断问题 错误:未知的标点字符串@ 102 STR:|; SQL:如果存在PersonName,则执行DROP功能;#MySQL返回空结果集(即零行)。 DELIMITER |; DELIMITER |; DELIMITER |; DELIMITER |

  • 为什么下面的bash代码不起作用? 预期产出:

  • 问题内容: 我想将字符串拆分为单个字符。所以我做: 但这产生了: 在其他语言(例如Ruby)中执行相同操作时,我不习惯使用第一个空字符串。它背后的逻辑是什么? 问题答案: 你为什么要用这个?使用可能会更好。 我知道一个会返回一个字符串数组,而另一个会给您一个字符数组。由于您希望分别使用每个字符,因此我假设这与您的代码无关。

  • 问题内容: 我有以下字符串: 我“肯定”想“上学”。 现在,我想在省略号处分割此字符串,即我想获得以下输出: 我会 一定 喜欢 上学 。 问题答案: 如果您是用引号()代替省略号,最简单的解决方案是使用 :

  • 问题内容: 对于在字符串中 最后一次 出现定界符时拆分字符串的建议Python惯用法是什么?例: 接受第二个参数,即要分割的分隔符的出现。像常规列表索引一样,表示末尾的末尾。如何才能做到这一点? 问题答案: 使用 或代替: 可让您指定分割次数,而仅分割一次,但总是返回固定数量的元素(前缀,定界符和后缀),并且对于单个分割情况而言更快。 演示: 两种方法都从字符串的右侧开始拆分;通过将最大值作为第二