如何只计算字符串中的字母
本文关键字:字符串 计算 | 更新日期: 2023-09-27 18:30:48
在下一个代码中,我将文本拆分为单词,将它们单独插入表中并计算每个单词中的字母数。问题是计数器也在计算每行开头的空格,并为某些单词提供错误的值。我怎样才能只准确计算每个单词的字母?
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);
}
}
}
这将是一种简单快捷的方法:
int numberOfLetters = words[i].Count(word => !Char.IsWhiteSpace(word));
另一个简单的解决方案可以为您节省上述答案和此处的其余答案,方法是先Trim()
,然后进行正常的计算,因为您声明它发生在每行的开头。
var words = str.Trim().Split(separators, StringSplitOptions.RemoveEmptyEntries);
您所需要的只是:(没有冗余转换)
int numberOfLetters = words[i].Length;
参见 String.Trim()
int numberOfLetters = words[i].Trim().ToCharArray().Length; //Calculate the numbers of letters in each word
而不是' '
使用''s+'
因为它一次匹配一个或多个空格,因此它会拆分任意数量的空格字符。
Regex.Split(myString, @"'s+");