【问题标题】:How to split a string after each unique letter如何在每个唯一字母后拆分字符串
【发布时间】:2019-01-03 13:48:33
【问题描述】:

我目前正在尝试将用户选择的字符串关键字拆分为每个单独的字母。但是,我不能说要在特定字母后拆分,因为在程序运行之前我不可能知道它将是什么单词。我希望以某种方式单独存储每个单独的字母,以便我以后可以参考。

到目前为止,我已经尝试使用 .Split 方法来执行此操作,但没有运气,如我的代码所示。

int keyLength = txtKeyword.Text.Length;  // Calculate length of keyword
string KeyCount = txtKeyword.Text;      // Count the characters 
string[] Count3 = KeyCount.Split(char, StringSplitOptions.None);

string[] keywordArray = new string[keyLength];

for (int i = 0; i < keyLength ; i++)
{
    keywordArray[i] = Count3[i];

    listBox1.Items.Add(keywordArray[i]);
}

我有一个错误出现在括号中,我说“char”不知道为什么。

【问题讨论】:

  • 正如 Compufreak 所说的使用 .ToCharArray,你得到的错误是因为你试图将 Char 类型传递给 Split 而它并不期望它 - 请参阅 docs.microsoft.com/en-us/dotnet/api/… 以获取可用的重载.
  • 我不确定我是否理解您要执行的操作。如果你有一个“关键字”,那么它只是一个字符串,对吗?不需要“拆分”——您只需直接访问底层 char 数组。你需要保持字母的顺序吗?您需要删除重复项或对其进行排序吗?

标签: c#


【解决方案1】:

我建议使用:

char[] charArray = KeyCount.ToCharArray();

但您的数据类型将是 char[],而不是 string[]

如果你真的需要字符串,你可以这样做:

string[] stringArray = charArray.Select(c => c.ToString()).ToArray();

【讨论】:

  • 我已经尝试过使用它,但目前还不确定我是否需要 char 或 string。我以后如何访问这个数组?
  • 它只是一个普通变量,您可以像其他变量一样访问和存储它,使用属性或类似的东西。您应该自己阅读它 - 从您提供的代码中无法判断如何做到这一点,这也不是最初问题的范围。我编辑了我的答案并删除了 var 关键字以使结果类型更加清晰。
【解决方案2】:

我希望我能很好地理解你的问题,但对我来说似乎太容易了,因为我根本没有使用 split :

char[] splittedText;
string test = "narmin";

private void Window_Loaded(object sender, RoutedEventArgs e)
{
    splittedText = new char[test.Length];
    for (int i =0 ; i<test.Length;i++)
    {
       splittedText[i] = test[i];
    }
}

【讨论】:

    【解决方案3】:

    您收到一个错误,因为它需要 char,而不是 char 类型。 以下是Split 方法的示例用法。

    string KeyCount = "1.2.3.4.5";
    string[] Count3 = KeyCount.Split('.');
    // Count3 would be ["1","2","3","4","5"] now
    // Note how the "." were cut during the Split operation
    

    正如 Compufreak 已经指出的那样,您可以使用 ToCharArray()string 转换为 char[]。 这是使用原始string的单个字符的更深入的方法:

    // Get the length of the Keyword (amount of characters in the string)    
    int keyLength = txtKeyword.Text.Length; 
    
    // Store the Text of the TextBox in a variable
    string keywordString = txtKeyword.Text;
    
    // Turn the string into an array of chars
    char[] charArray = keywordString.ToCharArray(); 
    
    // Turn the array of chars into an array of strings
    string[] stringArray = charArray.Select(c => c.ToString()).ToArray(); 
    

    创建数组后如何访问字符有几种方法:

    // 1. Iterate through the array with a foreach loop
    foreach (char character in charArray)
    {
        // Do stuff with the character
        char tempChar = character;
        if (character == 'a')
        {
            // Do stuff
        }
    }
    
    // 2. Iterate through the array with a for loop
    for (int i = 0; i < charArray.Length; i++)
    {
        char tempChar = charArray[i];
    }
    
    // 3. Get the character at a specific position (read: index) in the array
    char tempChat = charArray[0];
    
    // The string array works exactly the same for all three methods
    foreach (string singleString in stringArray)
    {
        // Do stuff with the string
        string tempString = singleString;
        if (tempString == "a")
        {
            // Do stuff
        }
    }
    

    但是,由于您可以迭代 string,就好像它是一个 char 数组一样,您可以执行以下操作。注意我是如何使用keywordString 而不是一个新数组。

    for (int i = 0; i < keywordString.Length; i++)
    {
        char tempChar = keywordString[i];
    }
    
    foreach (char character in keywordString)
    {
        // As seen above
    }
    
    char singleChar = keywordString[0];
    

    【讨论】:

      猜你喜欢
      • 2021-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-08
      • 1970-01-01
      相关资源
      最近更新 更多