Update 18-Strings.md

#Fix issue #50: 优化表格显示并校对
This commit is contained in:
Jason315
2019-06-28 17:21:58 +08:00
committed by GitHub
parent 8fdd8cbe96
commit d1f80a0b5a

View File

@@ -469,6 +469,7 @@ Total 49.39
正如你所见,通过相当简洁的语法,`Formatter`提供了对空格与对齐的强大控制能力。在该程序中,为了恰当地控制间隔,格式化字符串被重复利用了多遍。
### `Formatter`转换
下面的表格展示了最常用的类型转换:
| 类型 | 含义 |
| :----: | :---- |
| `d` | 整型(十进制) |
@@ -480,7 +481,9 @@ Total 49.39
| `x` | 整型(十六进制) |
| `h` | 散列码(十六进制) |
| `%` | 字面值“%” |
下面的程序演示了这些转换是如何工作的:
```java
// strings/Conversion.java
import java.math.*;
@@ -669,6 +672,8 @@ public class Hex {
*/
```
为了打开及读入二进制文件,我们用到了另一个工具`Files.readAllBytes()`,这已经在[Files章节](#)介绍过了。这里的`readAllBytes()`方法将整个文件以`byte`数组的形式返回。
<!-- Regular Expressions -->
## 正则表达式
很久之前,*正则表达式*就已经整合到标准Unix工具集之中例如sed、awk和程序语言之中了如Python和Perl有些人认为正是正则表达式促成了Perl的成功。而在Java中字符串操作还主要集中于`String``StringBuffer``StringTokenizer`类。与正则表达式相比较,它们只能提供相当简单的功能。
@@ -807,9 +812,9 @@ the mightiest banana in the forest...with... a banana!
这里只列出了部分常用的表达式你应该将JDK文档中`java.util.regex.Pattern`那一页加入浏览器书签中,以便在需要的时候方便查询。
| 逻辑操作符 | 含义 |
| :---- :| :---- |
| :----: | :---- |
| `XY` | `Y`跟在`X`后面 |
| `X|Y` | `X``Y` |
| `X\|Y` | `X``Y` |
| `(X)` | 捕获组capturing group。可以在表达式中用`\i`引用第i个捕获组 |
下面是不同的边界匹配符:
@@ -1515,14 +1520,19 @@ But I'm not dead yet! I feel happy!
[^1]: C++允许编程人员任意重载操作符。这通常是很复杂的过程参见Prentice Hall于2000年编写的《Thinking in C++第2版》第10章因此Java设计者认为这是很糟糕的功能不应该纳入到Java中。起始重载操作符并没有糟糕到只能自己去重载的地步但具有讽刺意味的是与C++相比在Java中使用操作符重载要容易得多。这一点可以在Python(参见[www.Python.org](http://www.python.org))和C#中看到,它们都有垃圾回收机制,操作符重载也简单易懂。
[^2]: Java并非在一开始就支持正则表达式因此这个令人费解的语法是硬塞进来的。
[^3]: 网上还有很多实用并且成熟的正则表达式工具。
[^4]: input来自于[Galaxy Quest](https://en.wikipedia.org/wiki/Galaxy_Quest)中Taggart司令的一篇演讲。
[^5]: 我不知道他们是如何想出这个方法名的,或者它到底指的什么。这只是代码审查很重要的原因之一。
<!-- 分页 -->
<div style="page-break-after: always;"></div>