入力された文字列は、大文字と小文字を問わず文の大文字と小文字に変換する必要があります。
お気に入り
こんにちは、derpです。私の質問に答えてくれてありがとう。
に変換される
こんにちは、derpです。私の質問に答えてくれてありがとう。
入力された文字列は、大文字と小文字を問わず文の大文字と小文字に変換する必要があります。
お気に入り
こんにちは、derpです。私の質問に答えてくれてありがとう。
に変換される
こんにちは、derpです。私の質問に答えてくれてありがとう。
私はこの種の正規表現を思いつきました:
var rg = /(^\w{1}|\.\s*\w{1})/gi;
var myString = "hi all, this is derp. thank you all to answer my query.";
myString = myString.replace(rg, function(toReplace) {
return toReplace.toUpperCase();
});
これを試してみてください。うまくいきます。先頭にスペースがある文字列でも機能します。
var string="hi all, this is derp. thank you all to answer my query.";
var n=string.split(".");
var vfinal=""
for(i=0;i<n.length;i++)
{
var spaceput=""
var spaceCount=n[i].replace(/^(\s*).*$/,"$1").length;
n[i]=n[i].replace(/^\s+/,"");
var newstring=n[i].charAt(n[i]).toUpperCase() + n[i].slice(1);
for(j=0;j<spaceCount;j++)
spaceput=spaceput+" ";
vfinal=vfinal+spaceput+newstring+".";
}
vfinal=vfinal.substring(0, vfinal.length - 1);
alert(vfinal);
デモを試す
http://jsfiddle.net/devmgs/6hrv2/
function sentenceCase(strval){
var newstrs = strval.split(".");
var finalstr="";
//alert(strval);
for(var i=0;i<newstrs.length;i++)
finalstr=finalstr+"."+ newstrs[i].substr(0,2).toUpperCase()+newstrs[i].substr(2);
return finalstr.substr(1);
}
すべてのドットは必ずしも行末を表すとは限らず、略語などである可能性があることに注意してください。また、ピリオドの後にスペースを入力するかどうかもわかりません。これらの条件により、このスクリプトは脆弱になります。
以下のコードは、期待どおりに機能しています。
function toSentenceCase(inputString) {
inputString = "." + inputString;
var result = "";
if (inputString.length == 0) {
return result;
}
var terminalCharacterEncountered = false;
var terminalCharacters = [".", "?", "!"];
for (var i = 0; i < inputString.length; i++) {
var currentChar = inputString.charAt(i);
if (terminalCharacterEncountered) {
if (currentChar == ' ') {
result = result + currentChar;
} else {
var currentCharToUpperCase = currentChar.toUpperCase();
result = result + currentCharToUpperCase;
terminalCharacterEncountered = false;
}
} else {
var currentCharToLowerCase = currentChar.toLowerCase();
result = result + currentCharToLowerCase;
}
for (var j = 0; j < terminalCharacters.length; j++) {
if (currentChar == terminalCharacters[j]) {
terminalCharacterEncountered = true;
break;
}
}
}
result = result.substring(1, result.length - 1);
return result;
}
これは私が最終的に使用したソリューションです:
str = 'hi all, this is derp. thank you all to answer my query.';
temp_arr = str.split('.');
for (i = 0; i < temp_arr.length; i++) {
temp_arr[i]=temp_arr[i].trim()
temp_arr[i] = temp_arr[i].charAt(0).toUpperCase() + temp_arr[i].substr(1).toLowerCase();
}
str=temp_arr.join('. ') + '.';
return str;
このスクリプトは各行に ..... 日曜日 月曜日 火曜日 水曜日 木曜日 金曜日 土曜日 を出力します。
let rg = /(^\w{1}|\.\s*\w{1})/gi;
const days = ['sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday'];
for(let day of days) {
console.log(day.replace(rg, function(toReplace) {
return toReplace.toUpperCase();
}))