给出一个字符串如 “a journey of, a thousand 'miles' must can't \"begin\" with a single step.” ,通过 php 程序处理变成 “a journey of, a thousand 'miles' must can't "begin" with a single step.”
注意:
1、每个单词最后的字符如果是大写就变成小写,如果是小写就变成大写。
2、需要考虑类似 can't 这种形式的转换。
3、标点符号(只考虑 , ' " . ;)不用变化。
<?<span>php
</span><span>function</span> convertLastChar(<span>$str</span><span>) {
</span><span>$markArr</span> = <span>array</span>(", ", "' ", "\" ", ". ", "; "<span>);
</span><span>$ret</span> = ""<span>;
</span><span>for</span> (<span>$i</span> = 0, <span>$j</span> = <span>strlen</span>(<span>$str</span>); <span>$i</span> < <span>$j</span>; <span>$i</span>++<span>) {
</span><span>if</span> (<span>$i</span> < <span>$j</span> - 2<span>) {
</span><span>$afterStr</span> = <span>$str</span>{<span>$i</span> + 1} . <span>$str</span>{<span>$i</span> + 2<span>};
} </span><span>else</span> <span>if</span> (<span>$i</span> < <span>$j</span> - 1<span>) {
</span><span>$afterStr</span> = <span>$str</span>{<span>$i</span> + 1} . " "<span>;
}
</span><span>if</span> (<span>in_array</span>(<span>$afterStr</span>, <span>$markArr</span><span>)
</span>|| <span>$i</span> == <span>$j</span> - 1
|| <span>$str</span>{<span>$i</span> + 1} == " "<span>) {
</span><span>$ret</span> .= <span>strtoupper</span>(<span>$str</span>{<span>$i</span>}) === <span>$str</span>{<span>$i</span><span>}
</span>? <span>strtolower</span>(<span>$str</span>{<span>$i</span><span>})
</span>: <span>strtoupper</span>(<span>$str</span>{<span>$i</span><span>});
} </span><span>else</span><span> {
</span><span>$ret</span> .= <span>$str</span>{<span>$i</span><span>};
}
}
</span><span>return</span> <span>$ret</span><span>;
}
</span>?><?<span>php
</span><span>//</span><span>test</span>
<span>$str1</span> = "A journey of, a thousand 'miles' must can't \"begin\" with a single step."<span>;
</span><span>$str2</span> = "A journey of, a thousand 'miles' must can't \"begin\" with a single step. "<span>;
</span><span>$str3</span> = "A journey of, a thousand 'miles' must can't \"begin\" with a single step. a "<span>;
</span><span>$str4</span> = "A journey of, a thousand 'miles' must can't \"begin\" with a single step. a B"<span>;
</span><span>$str5</span> = "A journey of, a thousand 'miles' must can't \"begin\" with a single step. a b'"<span>;
</span><span>$str6</span> = "A journey of, a thousand 'miles' must can't \"begin\" with a single step. a B\""<span>;
</span><span>echo</span> "source:<br/>" . <span>$str1</span> . "<br/>result:<br/>" . convertLastChar(<span>$str1</span>) . "<br/><br/>"<span>;
</span><span>echo</span> "source:<br/>" . <span>$str2</span> . "<br/>result:<br/>" . convertLastChar(<span>$str2</span>) . "<br/><br/>"<span>;
</span><span>echo</span> "source:<br/>" . <span>$str3</span> . "<br/>result:<br/>" . convertLastChar(<span>$str3</span>) . "<br/><br/>"<span>;
</span><span>echo</span> "source:<br/>" . <span>$str4</span> . "<br/>result:<br/>" . convertLastChar(<span>$str4</span>) . "<br/><br/>"<span>;
</span><span>echo</span> "source:<br/>" . <span>$str5</span> . "<br/>result:<br/>" . convertLastChar(<span>$str5</span>) . "<br/><br/>"<span>;
</span><span>echo</span> "source:<br/>" . <span>$str6</span> . "<br/>result:<br/>" . convertLastChar(<span>$str6</span>) . "<br/><br/>"<span>;
</span>?>结果:
source:<span> A journey of</span>, a thousand 'miles' must can'<span>t "begin" with a single step. result: a journeY oF, A thousanD </span>'mileS' musT can'T "begiN" witH A singlE steP.<span> source</span>:<span> A journey of</span>, a thousand 'miles' must can'<span>t "begin" with a single step. result: a journeY oF, A thousanD </span>'mileS' musT can'T "begiN" witH A singlE steP.<span> source</span>:<span> A journey of</span>, a thousand 'miles' must can'<span>t "begin" with a single step. a result: a journeY oF, A thousanD </span>'mileS' musT can'T "begiN" witH A singlE steP.<span> A source</span>:<span> A journey of</span>, a thousand 'miles' must can'<span>t "begin" with a single step. a B result: a journeY oF, A thousanD </span>'mileS' musT can'T "begiN" witH A singlE steP.<span> A b source</span>:<span> A journey of</span>, a thousand 'miles' must can't "begin" with a single step. a b'<span> result</span>:<span> a journeY oF</span>, A thousanD 'mileS' musT can'T "begiN" witH A singlE steP. A B'<span> source</span>:<span> A journey of</span>, a thousand 'miles' must can'<span>t "begin" with a single step. a B" result: a journeY oF, A thousanD </span>'mileS' musT can'T "begiN" witH A singlE steP. A b"<span><br /></span>
我们可以看到,是符合预期的。
Perl学习手札是台湾perl高手写的一篇文章,特打包为chm版,方便大家阅读。 关于本书 1. 关于Perl 1.1 Perl的历史 1.2 Perl的概念 1.3 特色 1.4 使用Perl的环境 1.5 开始使用 Perl 1.6 你的第一个Perl程序 2. 标量变量(Scalar) 2.1 关于标量 2.1.1 数值 2.1.2 字符串 2.1.3 数字与字符串转换 2.2 使用你自己的变量 2.3 赋值 2.3.1 直接设定 2.3.2 还可以这样 2.4 运算 2.5 变量的输出/输入 2.
0
http://blog.sijiaomao.com/?p=98,有改动(增加了can't这种),按改后的规则,原文答案全是错的。
立即学习“PHP免费学习笔记(深入)”;
全网最新最细最实用WPS零基础入门到精通全套教程!带你真正掌握WPS办公! 内含Excel基础操作、函数设计、数据透视表等
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号