Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何只计算字符串中的字母?_C#_Mysql - Fatal编程技术网

C# 如何只计算字符串中的字母?

C# 如何只计算字符串中的字母?,c#,mysql,C#,Mysql,在下一个代码中,我将文本拆分为单词,将它们分别插入一个表中,并计算每个单词中的字母数。 问题是计数器也在计算每行开头的空格,并且给了我一些单词错误的值。 我怎样才能准确地计算每个单词的字母 var str = reader1.ReadToEnd(); char[] separators = new char[] {' ', ',', '/', '?'}; //Clean punctuation from copying var words = str.Split(separators, S

在下一个代码中,我将文本拆分为单词,将它们分别插入一个表中,并计算每个单词中的字母数。 问题是计数器也在计算每行开头的空格,并且给了我一些单词错误的值。 我怎样才能准确地计算每个单词的字母

var str = reader1.ReadToEnd();

char[] separators = new char[] {' ', ',', '/', '?'};   //Clean punctuation from copying
var words = str.Split(separators, StringSplitOptions.RemoveEmptyEntries).ToArray(); //Insert all the song words into "words" string
string constring1 = "datasource=localhost;port=3306;username=root;password=123";

using (var conDataBase1 = new MySqlConnection(constring1))
{
    conDataBase1.Open();
    for (int i = 0; i < words.Length; i++)
    {
        int numberOfLetters = words[i].ToCharArray().Length; //Calculate the numbers of letters in each word  
        var songtext = "insert into myproject.words (word_text,word_length) values('" + words[i] + "','" + numberOfLetters + "');"; //Insert words list and length into words table
        MySqlCommand cmdDataBase1 = new MySqlCommand(songtext, conDataBase1);
        try
        { 
            cmdDataBase1.ExecuteNonQuery(); 
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);  
        }
    }
 }
var str=reader1.ReadToEnd();
char[]分隔符=新的char[]{',',',','/','?'}//清除复制的标点符号
var words=str.Split(分隔符、StringSplitOptions.removeMptyEntries.ToArray()//将所有歌曲单词插入“单词”字符串
string constring1=“datasource=localhost;port=3306;username=root;password=123”;
使用(var conditabase1=new MySqlConnection(constring1))
{
conDataBase1.Open();
for(int i=0;i
请参见


不要使用
'
而是使用
'\s+'
,因为它一次匹配一个或多个空格,所以可以在任意数量的空格字符上拆分

Regex.Split(myString, @"\s+");

不要使用
'
而是使用
'\s+'
,因为它一次匹配一个或多个空格,所以可以在任意数量的空格字符上拆分

Regex.Split(myString, @"\s+");

这将是一种简单快速的方法:

int numberOfLetters = words[i].Count(word => !Char.IsWhiteSpace(word));
另一个简单的解决方案是首先使用
Trim()

var words = str.Trim().Split(separators, StringSplitOptions.RemoveEmptyEntries);
您所需要的是:(无需冗余转换)


这将是一种简单快速的方法:

int numberOfLetters = words[i].Count(word => !Char.IsWhiteSpace(word));
另一个简单的解决方案是首先使用
Trim()

var words = str.Trim().Split(separators, StringSplitOptions.RemoveEmptyEntries);
您所需要的是:(无需冗余转换)


是否只有您遇到问题的空间?如果是这样的话。Trim()首先是字符串。如果要拆分和删除空条目,我似乎看不出有任何理由它应该给您任何空格,也许您可以与我们共享整行内容以及拆分成的内容?如何计算包含多个
字符的“字母”(如代理项对或非规范化重音字符)?是否只有空格有问题?如果有。Trim()首先是字符串。如果要拆分和删除空条目,我似乎看不出有什么理由它应该给您任何空格,也许您可以与我们共享整行内容以及拆分成的内容?如何计算包含多个字符的“字母”(如代理项对或非标准化重音字符)?我仍然有一个问题。每行的最后一个字与下一行的第一个字一起出现在表格中。听起来你没有按换行符拆分。看看将
\n
添加到
分隔符中是否有效。我仍然有一个问题。每行的最后一个字与下一行的第一个字一起出现在表格中。Sounds喜欢你没有按换行符拆分。看看在你的
分隔符中添加
\n
是否有效。我认为你在混合东西,这是一个不同的问题,不涉及非空格的计数。写一篇新文章,但首先我建议你在插入到的单词上添加一些
控制台。WriteLine
输出看看这是否真的是问题,还是代码中的某个问题。此外,习惯上也会标记有助于您获得最佳答案的答案。谢谢,第一个解决方案正在运行,但我仍然有两个问题。每行的最后一个字与下一行的第一个字一起出现在表格中。我可以通过在每行的结尾。第二个问题是,它还计算空单词的长度为0。我不知道应用时使用的是哪个
StreamReader
ReadToEnd
我假设它一直读到行末,因此您不需要“处理”最后一个单词的末尾加了一个空格,因为拆分为你做的事情。仔细检查一下自己,看看
str
是否代表一行,如果不是,那么你应该重新考虑如何处理由
ReadToEnd
读取的两行的情况。另外,我正在阅读全文(歌曲文本)。谢谢你的帮助。我认为你在混合东西,这是一个不同的问题,与计算非空格无关。写一篇新文章,但首先我建议你在插入的单词上放一些
控制台。WriteLine
输出,看看它是否真的是问题,还是代码中的某些东西。此外,习惯上标记t他回答了这个问题,帮你做了最好的+投票。谢谢,第一个解决方案是有效的,但我仍然有两个问题。每行的最后一个单词与下一行的第一个单词一起出现在桌子上。我可以通过在每行末尾输入空格来避免这个问题。第二个问题,它也计算空单词的长度0。我不知道w您在应用时使用的hich
StreamReader
我假设它一直读到行尾,因此您不需要“处理”最后一个单词结尾加空格,因为split为你做事情。仔细检查自己,看
str
是否代表一行,如果不是,那么你应该重新考虑如何处理已阅读的两行