标签: stringtokenizer

使用StringTokenizer复制String.split

通过鼓励这个,事实上我有十亿串的解析,我想修改我的代码接受的StringTokenizer代替的String []

我和你之间唯一能够获得美味的x2性能提升的事实就是你正在做的事情

"dog,,cat".split(",")
//output: ["dog","","cat"]

StringTokenizer("dog,,cat")
// nextToken() = "dog"
// nextToken() = "cat"
Run Code Online (Sandbox Code Playgroud)

如何使用StringTokenizer获得类似的结果?有没有更快的方法来做到这一点?

java string performance split stringtokenizer

5
推荐指数
2
解决办法
7121
查看次数

C#Tokenizer - 保留分隔符

我正在努力将代码从JAVA移植到C#,而部分JAVA代码使用了tokenizer - 但我的理解是,Java中stringtokenizer生成的数组也会有分隔符(在这种情况下为+, - ,/,*,(,))作为代币.我试图使用C#Split()函数,但它似乎消除了分隔符本身.最后,这将解析一个字符串并将其作为计算运行.我做了很多研究,但没有找到任何关于这个主题的参考资料.

有谁知道如何让它们遇到的实际分隔符在split数组中?

令牌化代码:

public CalcLexer(String s)
{
    char[] seps = {'\t','\n','\r','+','-','*','/','(',')'};
    tokens = s.Split(seps);
    advance();
}
Run Code Online (Sandbox Code Playgroud)

测试:

static void Main(string[] args)
    {
        CalcLexer myCalc = new CalcLexer("24+3");
        Console.ReadLine();
    }
Run Code Online (Sandbox Code Playgroud)

"24 + 3"将产生以下输出:"24","3"我正在寻找输出"24","+","3"

在完全公开的性质中,该项目是类分配的一部分,并使用以下完整的源代码:

http://www.webber-labs.com/mpl/source%20code/Chapter%20Seventeen/CalcParser.java.txt http://www.webber-labs.com/mpl/source%20code/Chapter%20Seventeen/CalcLexer .java.txt

c# stringtokenizer

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

使用分隔符"."在Java中进行Tokenize问题.

我需要使用分隔符拆分文本". ".例如,我想要这个字符串:

Washington is the U.S Capital. Barack is living there.
Run Code Online (Sandbox Code Playgroud)

分为两部分:

Washington is the U.S Capital. 
Barack is living there.
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

// Initialize the tokenizer
StringTokenizer tokenizer = new StringTokenizer("Washington is the U.S Capital. Barack is living there.", ". ");
 while (tokenizer.hasMoreTokens()) {
      System.out.println(tokenizer.nextToken());

}
Run Code Online (Sandbox Code Playgroud)

不幸的是输出:

Washington
is
the
U
S
Capital
Barack
is
living
there
Run Code Online (Sandbox Code Playgroud)

有人可以解释发生了什么吗?

java string tokenize stringtokenizer

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

如何从字符串中获取数字?

我正在使用Java StreamTokenizer来提取字符串的各种单词和数字,但是遇到了一个问题,其中包含逗号的数字,例如10,567被读作10.0和567.

我还需要从可能出现的数字中删除所有非数字字符,例如$ 678.00应为678.00或-87应为87.

我相信这些可以通过whiteSpace和wordChars方法实现,但有没有人知道如何做到这一点?

目前基本的streamTokenizer代码是:

        BufferedReader br = new BufferedReader(new StringReader(text));
        StreamTokenizer st = new StreamTokenizer(br);
        st.parseNumbers();
        st.wordChars(44, 46); // ASCII comma, - , dot.
        st.wordChars(48, 57); // ASCII 0 - 9.
        st.wordChars(65, 90); // ASCII upper case A - Z.
        st.wordChars(97, 122); // ASCII lower case a - z.
        while (st.nextToken() != StreamTokenizer.TT_EOF) {
            if (st.ttype == StreamTokenizer.TT_WORD) {                    
                System.out.println("String: " + st.sval);
            }
            else if (st.ttype == StreamTokenizer.TT_NUMBER) {
                System.out.println("Number: " + st.nval);
            }
        }
        br.close(); 
Run Code Online (Sandbox Code Playgroud)

或者有人建议REGEXP来实现这一目标吗?我不确定REGEXP在这里是否有用,因为在从字符串中读取标记之后会发生任何parding. …

java string parsing numbers stringtokenizer

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

elasticsearch定制令牌生成器-按长度拆分令牌

我正在使用Elasticsearch版本1.2.1。我有一个用例,其中我想创建一个自定义令牌生成器,该令牌生成器将令牌的长度破坏到一定的最小长度。例如,假设最小长度为4,则令牌“ abcdefghij”将被拆分为:“ abcd efgh ij”。

我想知道是否可以在无需编写自定义Lucene Tokenizer类的情况下实现此逻辑?

提前致谢。

lucene tokenize analyzer stringtokenizer elasticsearch

5
推荐指数
1
解决办法
2411
查看次数

如何使用逗号和行分隔符对字符串进行标记

我正在像在Java中那样在Swift中创建一个简单的String Tokenizer ......但是它真的不适合我.

我的数据源中每行的结尾用"^"分隔,数据用逗号分隔.

例如:"string 1,string 2,string 3,^,string 1,string 2,string 3,^"

这就是我在Java中所做的...(我只希望每行数据中的前两个字符串)

        String delimeter = "^";
        StringTokenizer tokenizedString = new StringTokenizer(responseString,delimeter);

        String [] stringArray = new String [tokenizedString.countTokens()];
        StringTokenizer tokenizedAgain;
        String str1;
        String str2;
        String token;
        for(int i =0; i< stringArray.length; i ++)
        {

            token = tokenizedString.nextToken();
            tokenizedAgain = new StringTokenizer(token, ",");
            tokenizedAgain.nextToken();
            str1 = tokenizedAgain.nextToken();
            str2 = tokenizedAgain.nextToken();
        }
Run Code Online (Sandbox Code Playgroud)

如果有人能指出我正确的方向,那将非常有帮助.

我看过这个:Swift:将一个String拆分成一个数组

这个:http://www.swift-studies.com/blog/2014/6/23/a-swift-tokenizer

但是我无法在Swift中找到关于String Tokenizing的其他资源.谢谢!

string stringtokenizer ios swift

5
推荐指数
1
解决办法
2730
查看次数

为什么 StringTokenizer 在 while 循环和 for 循环中使用时会给出不同的输出

我曾经StringTokenizer获取字符串的标记。但是当我尝试StringTokenizer使用 for 循环和 while 循环打印其中的所有标记时,我得到了两个不同的输出。

String string="She is an attractive girl, isn't she?";
StringTokenizer stringTokenizer=new StringTokenizer(string,",");
Run Code Online (Sandbox Code Playgroud)

当我尝试使用 for 循环打印所有令牌时

for (int i=0;i<stringTokenizer.countTokens();i++)
  System.out.println(stringTokenizer.nextToken());
Run Code Online (Sandbox Code Playgroud)

输出

她是个有魅力的女孩

当我尝试使用 while 循环打印所有令牌时

while (stringTokenizer.hasMoreElements())
  System.out.println(stringTokenizer.nextToken());
Run Code Online (Sandbox Code Playgroud)

输出

她是个有魅力的女孩

她不是吗?

我想知道为什么 while 循环给出了预期的两个标记,而 for 循环没有给出两个标记。

java stringtokenizer

5
推荐指数
1
解决办法
85
查看次数

使用Javascript中的正则表达式对字符串进行标记

假设我有一个包含换行符和制表符的长字符串:

var x = "This is a long string.\n\t This is another one on next line.";
Run Code Online (Sandbox Code Playgroud)

那么我们如何使用正则表达式将此字符串拆分为标记?

我不想使用,.split(' ')因为我想学习Javascript的正则表达式.

一个更复杂的字符串可能是这样的:

var y = "This @is a #long $string. Alright, lets split this.";
Run Code Online (Sandbox Code Playgroud)

现在我只想从这个字符串中提取有效单词,没有特殊字符和标点符号,即我想要这些:

var xwords = ["This", "is", "a", "long", "string", "This", "is", "another", "one", "on", "next", "line"];

var ywords = ["This", "is", "a", "long", "string", "Alright", "lets", "split", "this"];
Run Code Online (Sandbox Code Playgroud)

javascript regex string tokenize stringtokenizer

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

拆分包含多个分隔符的字符串,包括分隔符

我想使用多个字符分隔符拆分字符串,但我也想存储分隔符.我的分隔符是()+-*/

所以,例如,如果我有一个字符串

26+78(12*23)-16

我想得到

26

+

78

(

12

*

23

)

-

16
Run Code Online (Sandbox Code Playgroud)

每行作为单独的数组元素.

我认为你不能使用split函数来实现这一点.但是,我使用string-tokenizer进行的试验也失败了.我怎样才能做到这一点?

java regex stringtokenizer

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

字符串标记器和管道符号

    String s = "test -||- testing again -|- test_1 -||- testing again_1";
    StringTokenizer tokenizer = new StringTokenizer(s,"-|-");
    System.out.println(tokenizer.countTokens());

    while(tokenizer.hasMoreTokens()) {
        System.out.println(tokenizer.nextToken());
    }
Run Code Online (Sandbox Code Playgroud)

输出:

4
test 
 testing again 
 test_1 
 testing again_1
Run Code Online (Sandbox Code Playgroud)

算不应该是2 ..?

我尝试打印令牌,所有字符串都打印出来.不仅应将其视为一种标记.

我还从java API doc中读到了以下内容,

分隔符用于分隔令牌.令牌是不是分隔符的连续字符的最大序列

如果是这种情况,不应该使用我的分隔符" - | - "将字符串分成2个?

java string stringtokenizer

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