<!-- Auto-generated — do not edit by hand -->
# Java String Audit for PTC-Lisp

> **Warning:** This file is auto-generated by `mix ptc.gen_docs` from `priv/java_interop.exs`.
> Manual edits will be overwritten. Edit `priv/java_interop.exs` instead.

Curated LLM-compatibility target for `java.lang.String` methods.

See also: [Function Reference](../function-reference.md) | [Namespace Coverage](index.md) | [Clojure Core Audit](clojure-core-audit.md) | [Clojure String Audit](clojure-string-audit.md) | [Clojure Set Audit](clojure-set-audit.md) | [Clojure Walk Audit](clojure-walk-audit.md) | [Java Math Audit](java-math-audit.md) | [Java Boolean Audit](java-lang-boolean-audit.md) | [Java Double Audit](java-lang-double-audit.md) | [Java Float Audit](java-lang-float-audit.md) | [Java Integer Audit](java-lang-integer-audit.md) | [Java Long Audit](java-lang-long-audit.md) | [Java System Audit](java-lang-system-audit.md) | [Java LocalDate Audit](java-time-local-date-audit.md) | [Java Instant Audit](java-time-instant-audit.md) | [Java Duration Audit](java-time-duration-audit.md) | [Java Period Audit](java-time-period-audit.md) | [Java Date Audit](java-util-date-audit.md)

## Summary

Coverage excludes `not_relevant` entries: `supported / (supported + candidate + not_classified)`.

| Status | Count |
|--------|-------|
| Supported | 8 |
| Candidate | 5 |
| Not Relevant | 2 |
| Not Classified | 0 |
| Relevant Target | 13 |
| Coverage | 8/13 (61.5%) |
| **Total** | **15** |

## Details

| Var | Status | Description | Notes |
|-----|--------|-------------|-------|
| `.charAt` | 🔲 candidate | Return character at index | Potentially useful, but PTC-Lisp must define how a Java UTF-16 char, including an isolated surrogate, is represented. |
| `.contains` | ✅ supported | Substring containment | DIV-40: character literals are accepted as arguments (PTC-Lisp has no Character type). DIV-41: character-literal receivers behave as one-character strings. DIV-53: the bounded UTF-16 view rejects String inputs larger than 256,000 bytes. |
| `.endsWith` | ✅ supported | Suffix test | DIV-40: character literals are accepted as arguments (PTC-Lisp has no Character type). DIV-41: character-literal receivers behave as one-character strings. DIV-53: the bounded UTF-16 view rejects String inputs larger than 256,000 bytes. |
| `.equalsIgnoreCase` | 🔲 candidate | Case-insensitive string equality | Common Java idiom in generated code. |
| `.getBytes` | ❌ not_relevant | Encode string to bytes | Byte arrays and charsets are outside the sandbox data model. |
| `.indexOf` | ✅ supported | First substring index | BUG GAP-J05: integer character-code overloads are unsupported. Indexes use Java UTF-16 code units. DIV-41: character-literal receivers behave as one-character strings (PTC-Lisp has no Character type). DIV-53: the bounded UTF-16 view rejects String inputs larger than 256,000 bytes. |
| `.intern` | ❌ not_relevant | Intern a Java string | JVM string pool operation; not meaningful on BEAM. |
| `.isEmpty` | 🔲 candidate | Return true for empty string | empty? covers the common PTC-Lisp need. |
| `.lastIndexOf` | ✅ supported | Last substring index | BUG GAP-J05: substring/from-index and integer character-code overloads are unsupported. Indexes use Java UTF-16 code units. DIV-41: character-literal receivers behave as one-character strings (PTC-Lisp has no Character type). DIV-53: the bounded UTF-16 view rejects String inputs larger than 256,000 bytes. |
| `.length` | ✅ supported | String length | Returns Java UTF-16 code-unit length. DIV-41: character-literal receivers behave as one-character strings (PTC-Lisp has no Character type). DIV-53: the bounded UTF-16 view rejects String inputs larger than 256,000 bytes. |
| `.startsWith` | ✅ supported | Prefix test | BUG GAP-J05: prefix/offset overload is unsupported. DIV-40: character literals are accepted as arguments (PTC-Lisp has no Character type). DIV-41: character-literal receivers behave as one-character strings. DIV-53: the bounded UTF-16 view rejects String inputs larger than 256,000 bytes. |
| `.substring` | ✅ supported | Extract substring | Uses Java UTF-16 code-unit indexes. DIV-41: character-literal receivers behave as one-character strings. DIV-53: ranges containing an unpaired surrogate and inputs larger than 256,000 bytes produce invalid_java_string. |
| `.toLowerCase` | 🔲 candidate | Lowercase string | Deferred until a deterministic locale and pinned Unicode-data contract are selected. |
| `.toUpperCase` | 🔲 candidate | Uppercase string | Deferred until a deterministic locale and pinned Unicode-data contract are selected. |
| `.trim` | ✅ supported | Remove leading and trailing code units from U+0000 through U+0020 | Uses Java String.trim semantics, which differ from clojure.string/trim. DIV-41: character-literal receivers behave as one-character strings. DIV-53: String inputs larger than 256,000 bytes produce invalid_java_string. |
