> ## Documentation Index
> Fetch the complete documentation index at: https://docs.kasoftware.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 逻辑格式化器

> 用于对 ArcScript 属性值执行条件逻辑、比较以及 null/空检查的格式化器。

## allownull()

如果属性不存在则返回 *NULL*，如果存在则返回其值。

## contains(target\[, ifcontains]\[, ifnotcontains])

如果输入字符串包含 *target*，则返回 *true*；否则返回 *false*。

可以将 *ifcontains* 参数设置为在输入字符串包含 *target* 时返回的替代值，也可以将 *ifnotcontains* 参数设置为在输入字符串不包含 *target* 时返回的替代值。

### 示例

```xml theme={null}
<arc:set attr="myString" value="hello world" />
<arc:if exp="[myString | contains('hello')]">
  <arc:set attr="response" value="hello to you too!" />
  <arc:else>
    <arc:set attr="response" value="I would appreciate a greeting" />
  </arc:else>
</arc:if>
```

## def(ifnotexists\[, ifexists])

设置属性的“默认”值。如果该属性尚未设置值，则将其设置为 *ifnotexists* 中传入的值；如果该属性已存在，则将其设置为 *ifexists* 中传入的值。

### 示例

```xml theme={null}
<!-- count the number of loops in an XML document using xmlDOMSearch -->

<arc:set attr="xml.uri" value="[FilePath]" />
<arc:set attr="xml.xpath" value="/Items/test/loop" />

<arc:call op="xmlDOMSearch" in="xml">
  <!-- this code executes for each occurrence of the 'xpath' in the XML document -->
  <arc:set attr="loopCount" value="[loopCount | def(0) | add(1)]" />
</arc:call>
```

## empty(value)

如果属性值为空，则返回指定的值；否则返回原始属性值。

* **value**：属性为空时要使用的值。

## equals(value\[, ifequal]\[, ifnotequal])

如果输入属性与 *value* 匹配，则返回 *true*；否则返回 *false*。

如果提供了 *ifequal* 和/或 *ifnotequal*，则返回这些参数中的值，而不是 *true* 和 *false*。

### 示例

```xml theme={null}
<arc:set attr="myItem.code" value="[xpath(data/lineitems/itemcode)]" />
<arc:if exp="[myItem.code | equals('A5')]">
  <arc:set attr="myItem.name" value="spoon" />
  <arc:else>
    <arc:set attr="myItem.name" value="fork" />
  </arc:else>
</arc:if>
```

## ifequal(value\[, ifequals]\[, ifnotequals])

将属性值与第一个参数值进行比较。如果它们相等，则返回 *true*（或 *ifequals*）；如果不相等，则返回 *false*（或 *ifnotequals*）。

* **value**：要与属性值进行比较的字符串。
* **ifequals**：可选值，如果属性值等于第一个参数表示的值，则返回此值。
* **ifnotequals**：可选值，如果属性值不等于第一个参数表示的值，则返回此值。

## ifmatches(value\[, ifmatch]\[, ifnotmatch])

如果属性值与第一个参数匹配，则返回 *true*（或 *ifmatch*）；否则返回 *false*（或 *ifnotmatch*）。

* **value**：要与属性值进行比较的值。
* **ifmatch**：可选值，如果属性值与参数值匹配，则返回此值。
* **ifnotmatch**：可选值，如果属性值与参数值不匹配，则返回此值。

## isalphabetic(\[ifalpha]\[, ifnotalpha])

如果属性值中的所有字符都是字母且至少有一个字符，则返回 *true*（或 *ifalpha*）；否则返回 *false*（或 *ifnotalpha*）。

* **ifalpha**：可选值，如果属性值是字母字符串，则返回此值。
* **ifnotalpha**：可选值，如果属性值不是字母字符串，则返回此值。

## isalphanumeric(\[ifalphanum]\[, ifnotalphanum])

如果属性值中的所有字符都是字母数字字符且至少有一个字符，则返回 *true*（或 *ifalphanum*）；否则返回 *false*（或 *ifnotalphanum*）。

* **ifalphanum**：可选值，如果属性值只包含字母或数字字符，则返回此值。
* **ifnotalphanum**：可选值，如果属性值包含非字母或非数字字符，则返回此值。

## islower(\[iflower]\[, ifnotlower])

如果属性值中的所有字母都是小写且至少有一个字符是字母，则返回 *true*（或 *iflower*）；否则返回 *false*（或 *ifnotlower*）。

* **iflower**：可选值，如果属性值为小写，则返回此值。
* **ifnotlower**：可选值，如果属性值不是小写，则返回此值。

## isnumeric(\[ifnum]\[, ifnotnum])

如果属性值中的所有字符都是数字且至少有一个字符，则返回 *true*（或 *ifnum*）；否则返回 *false*（或 *ifnotnum*）。

* **ifnum**：可选值，如果属性值是数字，则返回此值。
* **ifnotnum**：可选值，如果属性值不是数字，则返回此值。

## isspace(\[ifspace]\[, ifnotspace])

如果属性值中只有空白字符且至少有一个字符，则返回 *true*（或 *ifspace*）；否则返回 *false*（或 *ifnotspace*）。

* **ifspace**：可选值，如果属性值为空白字符，则返回此值。
* **ifnotspace**：可选值，如果属性值不是空白字符，则返回此值。

## isupper(\[ifupper]\[, ifnotupper])

如果属性值中的所有字母都是大写且至少有一个字符是字母，则返回 *true*（或 *ifupper*）；否则返回 *false*（或 *ifnotupper*）。

* **ifupper**：可选值，如果属性值为大写，则返回此值。
* **ifnotupper**：可选值，如果属性值不是大写，则返回此值。

## notequals(value\[, notequals]\[, equals])

将属性值与第一个参数值进行比较。如果它们不相等，则返回 *true*（或 *notequals*）；如果相等，则返回 *false*（或 *equals*）。

* **value**：要与属性值进行比较的字符串。
* **notequals**：可选值，如果属性值不等于第一个参数表示的值，则返回此值。
* **equals**：可选值，如果属性值等于第一个参数表示的值，则返回此值。

## startswith(target\[, iftrue]\[, iffalse])

如果输入字符串以 *target* 指定的值开头，则返回 *true*；否则返回 *false*。

如果提供了 *iftrue*，当找到 *target* 时会返回该值而不是 *true*；如果提供了 *iffalse*，当未找到 *target* 时会返回该值而不是 *false*。

### 示例

```xml theme={null}
<arc:set attr="myString" value="Sir, your carriage is ready." />
<arc:if exp="[myString | startswith('Sir')]">
  <arc:set attr="response" value="Thank you." />
  <arc:else>
    <arc:set attr="response" value="Use your manners." />
  </arc:else>
</arc:if>
```
