我正在通過麗塔庫的丹尼爾Shiffman的演示啓發字發生器。眼下,該代碼將使用線上的所有文字和標點符號之間的空間:如何從RiTa.js隨機單詞生成器中移除空格?
output += " ";
我一直在試圖找出如何更改代碼,使空間不標點符號之間(如週期)出現,話。我認爲,要做到這一點最簡單的方法是使用一個if /離開標點不變,但增加了空間的話,但我有一個很難搞清楚what functions from the Rita library to use for this,以及語法else語句。
任何想法?這裏是我的代碼現在:
var input;
var button;
var lexicon;
function setup() {
noCanvas();
lexicon = new RiLexicon();
input = createInput('As I say a noun is the name of a thing.');
button = createButton('submit');
input.changed(processRita);
button.mousePressed(processRita);
input.size(400);
}
function processRita() {
var s = input.value();
var rs = new RiString(s);
var words = rs.words();
var pos = rs.pos();
console.log(words);
console.log(pos);
var output = '';
for (var i = 0; i < words.length; i++) {
if (/nn.*/.test(pos[i])) {
var alliterations = lexicon.alliterations(words[i]);
if(alliterations.length == 0){
output+=words[i];
}else{
output += alliterations[Math.floor(Math.random() * alliterations.length)];
}
//console.log("noun");
//console.log(alliterations.length);
} else if (/jj.*/.test(pos[i])) {
var alliterations = lexicon.alliterations(words[i]);
output += alliterations[Math.floor(Math.random() * alliterations.length)];
//console.log("adjective");
} else if (/vb/.test(pos[i])) {
var alliterations = lexicon.alliterations(words[i]);
output += alliterations[Math.floor(Math.random() * alliterations.length)];
//console.log("verbs");
}
else {
//console.log(words[i]);
output += words[i];
} {
output += " ";
}
}
createP(output);
}
>「你可以只使用正則表達式測試一個字符串是否與標點符號相匹配,或者只是對您關心的每個標點符號使用一系列相等性檢查。「我正在考慮這樣做,但我不知道如何在函數中設置它。我嘗試了各種各樣的東西,但它破壞了代碼或使間距不均勻(僅在原始代碼中的POS後添加空格)。 –