【问题标题】:Need a method like Java's StringTokenizer hasTokens() method in Visual C#需要像 Java StringTokenizer 这样的方法在 Visual C# 中有 Tokens() 方法
【发布时间】:2012-07-06 17:06:58
【问题描述】:

我在这里进行了一些搜索,但找不到我确切需要的答案。我有一个结构,其中包含我需要发送到 Web 服务的搜索参数,而我要填写的字段之一是列表。编写原始代码来填充此参数。当它是 string[] 类型时,它看起来像这样,改变了变量名,

    searchParams.someParam= (new List<string>(txtboxInput.Text.Split(';'))).ToArray();

(; 用于界定用户可以输入的不同选项)

所以我想用 List.Add() 填充 List '同时'有可用的令牌。我搜索了 .NET 中是否有类似 StringTokenizer 的实现。大多数答案都说使用 string.Split,但没有提及 Java 的 StringTokenizer 也具有的其他有用方法。

感谢您的任何深思熟虑的答复。

【问题讨论】:

  • 另外,如果可能的话,我宁愿避免在这种特殊情况下使用 .NET Regex,我意识到这是一个可能的解决方案。
  • 你想要什么“有用”的方法?此外,该代码拆分为一个数组,将其移动到一个列表,然后返回到一个数组。你可以把它剪掉,然后分开。

标签: c# stringtokenizer


【解决方案1】:

从问题来看,您似乎只是想要:

List<string> list = txtboxInput.Text.Split(';').ToList();

【讨论】:

    【解决方案2】:

    我在这里看到了一些我认为您正在寻找的东西(这更多的是关于如何使用 Split() 的问题。我们不需要很多 nextTokenhasMoreTokens Java 的 StringTokenizer 具有的方法,因为它们内置在由Split 返回的数组中

    // From the question searchParams.someParam appears to be an array of strings, so you
    // can simplify to this vs what is in your above question
    searchParams.someParam = txtboxInput.Text.Split(';');
    
    // Looping through and adding to a list of string
    var myTokens = txtboxInput.Text.Split(';');
    var myTokenList = new List<string>();
    for(int index = 0; index < myTokens.length; index++) {
      myTokenList.Add(myTokens[index]);
    }
    
    // Total amount of tokens returned
    var length = myTokens.length;
    

    此外,RegEx 在这里没有多大意义,因为您只是在拆分字符串。根据字符串的大小,您可能可以获得性能增强,但最终拆分更简单。如果您没有性能问题,那么我不会改变您目前的情况。

    【讨论】:

      猜你喜欢
      • 2021-06-09
      • 2013-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-21
      • 1970-01-01
      • 2011-08-16
      • 1970-01-01
      相关资源
      最近更新 更多