2013-07-23 73 views
-1

我是編程新手,請耐心等待。 試圖創建一個字數統計功能。C#字數統計函數

但是,我得到了以下錯誤:

下面是我的代碼:不能隱式轉換類型「字符串」到「字符串[]」

這是什麼意思?

private void SplitWords(string fbStatus) 
    { 
     string[] splitWords = fbStatus.Split(new char[] { ' ' }, 
     StringSplitOptions.RemoveEmptyEntries).Length.ToString(); 
    } 
+0

它幾乎意味着它說什麼。我猜你知道「隱含」是什麼意思?僅供參考,'string []'表示「字符串類型的數組」 –

+0

塞繆爾在發佈他的最新更新作爲一個全新的問題後,將問題重新提出。 –

回答

1

您可以將string[]更改爲var以使其起作用。它想要一個string類型變量來存儲結果,而不是一個字符串數組,並且使用var告訴編譯器爲您選擇正確的類型,因此您不必擔心它。

假設你不是停留在存儲在一個字符串的數量,你可以使用Count()擴展方法:.Length也將工作,但因爲你正在做一個單詞計數我想這可能是更容易理解)

private void SplitWords(string fbStatus) 
{ 
    int splitWords = fbStatus.Split(new char[] { ' ' }, 
    StringSplitOptions.RemoveEmptyEntries).Count(); 
} 

如果你在某處使用此值的規劃,您可能還需要在你的方法結束時改變voidintreturn值。

private int SplitWords(string fbStatus) 
{ 
    return fbStatus.Split(new char[] { ' ' }, 
    StringSplitOptions.RemoveEmptyEntries).Count(); 
} 
+0

是的,謝謝;) –

+0

但現在,我必須計算詞彙密度。公式爲:唯一字數/總字數。假設我有這兩個函數,我的代碼是否正確? private int CalculateLexicalDensity(string fbStatus) { int ld = 0; ld =(UniqueWordCount(fbStatus)/ SplitWords(fbStatus))* 100; } –

0

您試圖分配的ToString()的結果(System.String)以string[]類型的變量。簡而言之,編譯器不知道如何將string轉換爲string[]並且抱怨。

也許你的意思是:

string numberOfSplitWords = fbStatus.Split(new char[] { ' ' }, 
    StringSplitOptions.RemoveEmptyEntries).Length.ToString(); 
0

你問一個陣列(即一string)的長度的字符串化版本,但你試圖將其存儲在string[]。類型不匹配,因此錯誤。

也許你的意思是:

string splitWords = fbStatus 
    .Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries) 
    .Length 
    .ToString(); 

0

fbStatus.Split(
    new char[] { ' ' }, 
    StringSplitOptions.RemoveEmptyEntries 
) 
.Length 
.ToString(); 

結果是string因爲Object.ToString總是返回string一個實例。但是,你嘗試,因爲你說

string[] splitWords = fbStatus.Split(
          new char[] { ' ' }, 
          StringSplitOptions.RemoveEmptyEntries 
        ) 
         .Length 
         .ToString(); 

,編譯器將允許你這樣做,如果有來自stringstring[]隱含意義的轉換的,其結果分配給string[]你不必明確說:「這個轉換到stringstring[])。但是,有沒有這樣的隱式轉換。因此,編譯器告訴你。

Cannot implicitly convert type string to string[]

我不清楚你在做什麼。如果你只是想從分裂的話,你剛纔說

string[] splitWords = fbStatus.Split(
          new char[] { ' ' }, 
          StringSplitOptions.RemoveEmptyEntries 
        ); 

如果你只是想單詞的數量,只是說

int count = fbStatus.Split(
       new char[] { ' ' }, 
       StringSplitOptions.RemoveEmptyEntries 
      ) 
      .Length; 

根據你的問題的標題,出現對我來說就是你想要的。

+0

我需要單詞的數量。我做了你最後一個int計數代碼,但我得到了以下錯誤:\t'int'不包含'Length'的定義,並且沒有擴展方法'Length'接受類型'int'的第一個參數可以找到(你是否缺少)使用指令或程序集引用?) –

+0

@Samuel Lee:我認爲你沒有正確輸入代碼,因爲假設'fbStatus'是一個'string','String.Split'的結果是一個'string []'並且所有數組都有'Length'屬性。你有沒有不小心打電話給'長度'兩次? – jason

0

此代碼給你的話的陣列(一個string[]):

fbStatus.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries) 

這將使您字(一個int)的數量:

fbStatus.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries).Length 

這將使您轉換爲字符串的字數(string):

fbStatus.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries).Length.ToString() 

由於這是string,所以不能直接將其分配給string[]