标签: stringtokenizer

Java StringTokenizer,空null标记

我试图将一个字符串分成29个令牌..... stringtokenizer不会返回null令牌.我试过string.split,但我相信我做错了什么:

String [] strings = line.split(",", 29);
Run Code Online (Sandbox Code Playgroud)

样本输入:

10150,15:58,23:58,16:00,00:00,15:55,23:55,15:58,00:01,16:03,23:58,,,,,16:00,23:22,15:54,00:03,15:59,23:56,16:05,23:59,15:55,00:01,,,,
10155,,,,,,,,,,,07:30,13:27,07:25,13:45,,,,,,,,,,,07:13,14:37,08:01,15:23
10160,10:00,16:02,09:55,16:03,10:06,15:58,09:48,16:07,09:55,16:00,,,,,09:49,15:38,10:02,16:04,10:00,16:00,09:58,16:01,09:57,15:58,,,,
Run Code Online (Sandbox Code Playgroud)

java string string-split stringtokenizer

10
推荐指数
2
解决办法
2万
查看次数

如何在目标c中拆分字符串

如何在Objective-C中拆分字符串?我正在开发一个包含日期选择器的简短应用程序.我显示日期从日期选择器获取它并通过标签显示它.

我的主要问题是如何将日期分成三个单独的字符串?谁有想法呢?

谢谢

iphone objective-c nsstring stringtokenizer ios

10
推荐指数
2
解决办法
2万
查看次数

如何在没有StringTokenizer的情况下替换字符串中的标记

给出一个像这样的字符串:

 Hello {FIRST_NAME}, this is a personalized message for you.
Run Code Online (Sandbox Code Playgroud)

FIRST_NAME是一个任意标记(传递给方法的地图中的一个键),编写一个例程,将该字符串转换为:

Hello Jim, this is a personalized message for you.
Run Code Online (Sandbox Code Playgroud)

给出了一张带有FIRST_NAME条目的地图 - > Jim.

似乎StringTokenizer是最直接的方法,但Javadocs真的说你应该更喜欢使用正则表达式aproach.你会如何在基于正则表达式的解决方案中做到这一点?

java regex stringtokenizer

9
推荐指数
4
解决办法
1万
查看次数

带有空令牌的 Java StringTokenizer

我有一个看起来像 - 56,0,76,0,93,,,,,,,1230 的字符串。我使用 StringTokenizer 将其拆分为“,”。然而,这似乎是从 93 直接跳到 1230。有没有办法让它在移动到 1230 之前返回六个空字符串?

java stringtokenizer

8
推荐指数
1
解决办法
5025
查看次数

对包含空标记的String进行标记

我有一个看似简单的问题,即将逗号分隔String为标记,在以下情况下输出应包含空标记:

  • String逗号中的第一个字符是逗号.
  • 最后一个字符String是逗号.
  • 连续两个逗号出现.

例如,对于String:",abd,def,,ghi,"应该产生输出:{"", "abd", "def", "", "ghi", ""}.

我已经尝试使用String.split,Scanner并且StringTokenizer对于这一点,但每个给出不同的不希望的输出(下文实施例).有人可以建议一个优雅的解决方案,最好使用JDK类吗?显然我可以自己编写代码,但我觉得我错过了上述三种方法之一.请注意,分隔符是固定的,String但不一定是逗号,也不是单个字符.

示例代码

import java.util.*;

public class Main12 {
  public static void main(String[] args) {
    String s = ",abd,def,,ghi,";
    String[] tokens = s.split(",");

    System.err.println("--- String.split Output ---");
    System.err.println(String.format("%s -> %s", s, Arrays.asList(tokens)));

    for (int i=0; i<tokens.length; ++i) {
      System.err.println(String.format("tokens[%d] = %s", i, tokens[i]));
    }

    System.err.println("--- Scanner Output ---");

    Scanner sc …
Run Code Online (Sandbox Code Playgroud)

java string string-split stringtokenizer java.util.scanner

7
推荐指数
1
解决办法
9115
查看次数

String.Split方法在传递多个多字符分隔符时如何确定分隔符优先级?

如果你有这个代码:

"......".Split(new String[]{"...", ".."}, StringSplitOptions.None);
Run Code Online (Sandbox Code Playgroud)

生成的数组元素是:

 1. ""
 2. ""
 3. ""
Run Code Online (Sandbox Code Playgroud)

现在,如果你颠倒了分隔符的顺序,

"......".Split(new String[]{"..", "..."}, StringSplitOptions.None);
Run Code Online (Sandbox Code Playgroud)

生成的数组元素是:

 1. ""
 2. ""
 3. ""
 4. ""
Run Code Online (Sandbox Code Playgroud)

从这两个例子中,我倾向于得出结论,当从左到右遍历数组的每个元素时,Split方法递归地标记化.

但是,一旦我们将包含字母数字字符的分隔符放入等式中,很明显上述理论是错误的.

  "5.x.7".Split(new String[]{".x", "x."}, StringSplitOptions.None)
Run Code Online (Sandbox Code Playgroud)

结果是: 1. "5" 2. ".7"

   "5.x.7".Split(new String[]{"x.", ".x"}, StringSplitOptions.None)
Run Code Online (Sandbox Code Playgroud)

结果是: 1. "5" 2. ".7"

这次我们获得相同的输出,这意味着基于第一组示例理论化的规则不再适用.(即:如果始终根据数组中分隔符的位置确定分隔符优先级,那么在最后一个示例中,我们将获得"5."&"7"而不是"5"&".7".

至于为什么我浪费时间去猜测.NET标准API是如何工作的,这是因为我想为我的java应用程序实现类似的功能,但是StringTokenizer和org.apache.commons.lang.StringUtils都没有提供拆分的能力.使用多个多字符分隔符的字符串(即使我要找到提供此功能的API,也很难知道它是否始终使用String.Split方法使用的相同算法进行标记.

c# string tokenize stringtokenizer

7
推荐指数
1
解决办法
880
查看次数

从RandomAccessFile读取数据产生不正确的结果 - Java

我有一个42行的文本文件.每行包含超过22,000个以逗号分隔的数字.

我想从每一行中提取某些数字,并且我有一个长度为1000的int数组,其中包含从这42行中的每一行中需要的1,000个数字.

例如,如果数组包含43,1,3244,则意味着我需要从第一行到第42行开始的第43个数字,第1个数字和第3244个数字.

我的for循环似乎不起作用,它只读取文本文件中第一行有42行220000个数字,我不知道它出错了.

for(int i=0;i<42;i++){ //irretates through the 42 lines of 
    counter=1; // to keep track about on which line the code is working
    System.out.println("Starting line"+i);

    st2=new StringTokenizer(raf1.readLine(),",");
    //raf3 is a RandomAccessFile object containing the 42 lines

    a:while(st2.hasMoreTokens()){
        b=is_there(array2,counter);
        // is_there is a method that compares the rank of the taken being read with 
       //the whole array that has the 1000 numbers that i want. 
        if(b==false){ 
            // if the rank or order of token [e.g. 1st, 432th] we are …
Run Code Online (Sandbox Code Playgroud)

java for-loop stringtokenizer randomaccessfile

7
推荐指数
2
解决办法
886
查看次数

在Java中将数据从CSV解析到数组

我正在尝试将CS​​V文件导入到可以在Java程序中使用的数组中.CSV文件已成功导入自身,输出显示在终端上,但它会引发错误:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1 
at CompareCSV.main(CompareCSV.java:19)
Run Code Online (Sandbox Code Playgroud)

在末尾.另外,当我尝试调用数组中的元素时,它也会显示相同的错误.我的代码如下:

import java.io.*;
import java.util.*;

public class CompareCSV {

    public static void main(String[] args) {

        String fileName = "sampledata1.csv";
        try {
            BufferedReader br = new BufferedReader( new FileReader(fileName));
            String strLine = null;
            StringTokenizer st = null;
            int lineNumber = 0, tokenNumber = 0;

            while((fileName = br.readLine()) != null) {
                lineNumber++;
                String[] result = fileName.split(",");
                for (int x=0; x<result.length; x++) {
                    System.out.println(result[x]);
                }
            }
        }

        catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch …
Run Code Online (Sandbox Code Playgroud)

java csv stringtokenizer

6
推荐指数
1
解决办法
4万
查看次数

将句子中的第一个单词用多个句子大写

例如:

String s ="这是a.line是.over"

应该出来

"这是a.Line is.Over"

我想过两次使用字符串标记器

-first split using"."

 -second split using " " to get the first word

 -then change charAt[0].toUpper
Run Code Online (Sandbox Code Playgroud)

现在我不确定如何使用字符串标记符的输出作为另一个的输入?

我也可以使用split方法生成我尝试过的数组

     String a="this is.a good boy";
     String [] dot=a.split("\\.");

       while(i<dot.length)
     {
         String [] sp=dot[i].split(" ");
            sp[0].charAt(0).toUpperCase();// what to do with this part?
Run Code Online (Sandbox Code Playgroud)

java string stringtokenizer

6
推荐指数
1
解决办法
1万
查看次数

在Java中分割String的最有效方法

为了这个问题,让我们假设我有一个String包含值Two;.Three;.Four(等等),但元素是分开的;..

现在我知道有多种方法可以分割字符串,例如split()StringTokenizer(更快的一个并且运行良好),但我的输入文件大约是1GB,我正在寻找比它更有效的东西StringTokenizer.

经过一些研究,我发现indexOf并且substring非常有效,但这些示例只有单个分隔符,或者结果只返回一个单词/元素.

示例代码使用indexOfsubstring:

String s = "quick,brown,fox,jumps,over,the,lazy,dog";
int from = s.indexOf(',');
int to = s.indexOf(',', from+1);
String brown = s.substring(from+1, to);
Run Code Online (Sandbox Code Playgroud)

上面的工作用于打印,brown但我如何使用indexOfsubstring分割具有多个分隔符的行并显示如下所有项目.

预期产出

Two
Three
Four
....and so on
Run Code Online (Sandbox Code Playgroud)

java string parsing split stringtokenizer

6
推荐指数
3
解决办法
5718
查看次数