h7h7h7 Ответов: 5

как считать слово с#


Привет я использовал этот код для подсчета символов :
string strsample = "Hello World";
label1.Text = "character count: " + strsample.Length.ToString();


но какой код я должен использовать, если хочу считать слова?..?



п. с

Уэс это хорошее описание хе хе :)

Sergey Alexandrovich Kryukov

Интересно, а что ты пробуешь?
--СА

h7h7h7

но какой код я должен использовать, если хочу считать слова?..

это ничего не значит :S

5 Ответов

Рейтинг:
2

VJ Reddy

Я думаю, что если требуется точно подсчитать слова, то лучше перечислить символы, разделяющие слова, и использовать их Matches способ получения Regex а затем выясните количество слов, используя Count собственность компании MatchesCollection найдено как показано ниже:

using System.Text.RegularExpressions;
void Main()
{
    string groupOfWords = @"It's a text for counting of words, with different word "+
                           "boundaries and hyphenated word like the all-clear.Is it OK? ";
    var matchesByListedChars = Regex.Matches(groupOfWords,
            @"[^\s.?,]+", RegexOptions.CultureInvariant | RegexOptions.Multiline
            | RegexOptions.IgnoreCase);
    Console.WriteLine ("Word count by listed chars = {0}",
                                    matchesByListedChars.Count);
    var matchesByAlphaNumeric= Regex.Matches(groupOfWords,
            @"[\w]+", RegexOptions.CultureInvariant | RegexOptions.Multiline
            | RegexOptions.IgnoreCase);
    Console.WriteLine ("Word count by alpha numeric pattern: {0}",
                                    matchesByAlphaNumeric.Count);
}
//Output
//Word count by listed chars = 20
//Word count by alpha numeric pattern: 22
//as It's and all-clear are counted as two words each


Maciej Los

Действительно замечание! Мой 5-й
Интересная закономерность ;)

VJ Reddy

Спасибо, лосмак.

Рейтинг:
2

Mehdi Gholam

Использовать следующее :

int count = inputstring.Split(' ').Length;


Maciej Los

Ваш ответ будет правильным, если слова не будут разделены другими знаками, такими как: !, @, # и многие другие.
Вот почему я голосую за 3.

Рейтинг:
18

Silent Guardian

это довольно просто

//if u r considering only spaces.
int WordCount=1;
foreach(char i in s)
{
 foreach (char i in s)
{
if (char.IsWhiteSpace(i))
WordCount++;
}
}


но слова могут быть разделены пробелами,запятыми,пунктуацией и т. д.
поэтому в этом случае создайте строку,содержащую все разделители слов
например:разделители строк=",. \'\"?!";//есть и другие. добавляйте его в любом порядке

теперь заменить
if (char.IsWhiteSpace(i))
WordCount++;

около
if (Separators.Contains(i))
WordCount++;


Распечатайте WordCount наконец, чтобы получить количество слов.

это было бы самое простое решение :D


h7h7h7

Теперь я понимаю, хочу ли я показать количество слов в labbel ?
label1.text=.....???? ( какой код ? )

h7h7h7

Я решил просто человеком

Я использовал : label1.text= wordcount.tosring();

Maciej Los

Ваш ответ будет правильным, если слова не будут разделены другими знаками, такими как: !, @, # и многие другие. Я не люблю искать знак за знаком.
Вот почему я голосую за 3.

Рейтинг:
1

Maciej Los

Воспользуйся регулярное выражение[^] и сет pattern чтобы найти свободные места.

Пример в vb:

Module Module1
    Sub Main()
        Dim pattern As String = "[^\w]" 'get all spaces and other signs, like: '.' '?' '!'
        Dim input As String = "This is a nice day. What about this? This tastes good. I saw a dog!"
        Dim words() As String = Nothing, i As Integer = 0, count As Integer = 0
        Console.WriteLine(input)
        words = Regex.Split(input, pattern, RegexOptions.IgnoreCase)
        For i = words.GetLowerBound(0) To words.GetUpperBound(0)
            If words(i).ToString = String.Empty Then count = count - 1
            count = count + 1
        Next
        Console.WriteLine("Count of words:" & count.ToString)

        Console.ReadKey()
    End Sub


И С#:
public static void Main()
{
    string pattern = "[^\\w]";
    //get all spaces and other signs, like: '.' '?' '!'
    string input = "This is a nice day. What about this? This tastes good. I saw a dog!";
    string[] words = null;
    int i = 0;
    int count = 0;
    Console.WriteLine(input);
    words = Regex.Split(input, pattern, RegexOptions.IgnoreCase);
    for (i = words.GetLowerBound(0); i <= words.GetUpperBound(0); i++) {
        if (words[i].ToString() == string.Empty)
            count = count - 1;
        count = count + 1;
    }
    Console.WriteLine("Count of words:" + count.ToString());

    Console.ReadKey();
}



Описание вроде бы в порядке ;)


Рейтинг:
0

Ja-ck-al

как подсчитать количество слов в строке с помощью c#,нажмите и получите пример кода здесь
В C# количество слов | символов число | число строк в String-SmartSnipp[]

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Text.RegularExpressions;

namespace WordCounter
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();      
        }

        private void button1_Click(object sender, EventArgs e)
        {
            StartCount();
        }

        private void StartCount()
        {
            lblChar.Text = "";
            lblWord.Text = "";
            lblLine.Text = "";

            if (txtUserInput.Text != "")
            {
                string useInput = "";
                useInput = txtUserInput.Text.Trim();             

                string pattern = "[^\\w]";
                string input = useInput;

                //word count             
                int i = 0, count = 0;

               string[] words = Regex.Split(input, pattern, RegexOptions.IgnoreCase);
                for (i = words.GetLowerBound(0); i <=words.GetUpperBound(0); i++)
                {
                    if (words[i].ToString() == string.Empty)
                        count = count - 1;
                    count = count + 1;
                }
                lblWord.Text = count.ToString();

                // line count            
                string[] lines = Regex.Split(useInput.Trim(), "\r\n");                
                lblLine.Text = lines.Length.ToString();

                //char count 
                int CharCount = 0;
                foreach (string value in lines)                
                    CharCount += value.Length;
              
                lblChar.Text = CharCount.ToString();  
            }
        }
    }
}


Maciej Los

На этот вопрос уже дан ответ? Чем ваш ответ отличается от принятого решения?