2014-11-20 103 views
1

如何計算出現在兩個字符串中的單詞數?如何計算兩個字符串之間的相等字數?

我想在這樣的

 let $nequalwords := count($item[text() eq $speech]) 

什麼是做到這一點的最好方法是什麼?

我想一起去的兩個for S按字比較的話,但我不知道是否有更好的方法來做到這一點。

+1

我不知道究竟你試圖算什麼。我想提供兩個示例字符串,要計數的字詞和最終的數字結果是合理的。 – 2014-11-20 22:24:45

回答

5

如何讓你最終字拆分上空白的字符串,然後創建一個字符串的序列和刪除那些不顯着,即那些出現在兩個字符串,通過再從減去該你知道所有單詞的數量在兩個字符串中出現了多少個單詞。例如:

let $distinct-words1 := distinct-values(tokenize($string1, "\s+")) 
    let $distinct-words2 := distinct-values(tokenize($string2, "\s+")) 
    let $all-words := ($distinct-words1, $distinct-words2) 
    return 
    count($all-words) - count(distinct-values($all-words)) 
+0

這不會給出兩個字符串連接中重複出現的單詞的數量,而不是出現在兩個單詞中的單詞數量? – 2014-11-20 23:56:05

+0

我編輯您的查詢咯,因爲我認爲這是不正確的XQuery(我也檢查了存在,這給了相同的編譯錯誤的BaseX)。 – dirkk 2014-11-21 09:27:53

+0

@MichaelKay我可能會誤解你。我嘗試計數字符串1也出現在字符串2字出現的次數,但是我忽略字符串1和字符串中的重複,因爲它們不是明顯的話,但我猜他們可能被認爲是不同的事件。也許我誤解了所需要的東西......這並不完全清楚。 – adamretter 2014-11-21 11:43:16

2

如何

count(tokenize($string1, "\s+")[. = tokenize($string2, "\s+")]) 

這是同時出現的第二個字符串在第一個字符串中的單詞數。這可能或可能不是你實際想要的。例如,如果兩個字符串是「越多越好」和「春之祭」,答案是2

相關問題