# Поиск и замена

- Human documentation: [https://docs.univer.ai/ru-RU/guides/sheets/features/find-replace](https://docs.univer.ai/ru-RU/guides/sheets/features/find-replace)

- Agent Markdown: [https://docs.univer.ai/ru-RU/guides/sheets/features/find-replace.md](https://docs.univer.ai/ru-RU/guides/sheets/features/find-replace.md)

- Requested language: `ru-RU`

- Content language: `ru-RU`

- Documentation version: `1.2.0`

- Source: [sheets/features/find-replace.ru-RU.mdx](https://github.com/dream-num/documentation/blob/dev/content/guides/sheets/features/find-replace.ru-RU.mdx)

---

#### Package metadata

```json
{
  "mobile": true,
  "preset": [
    {
      "client": "@univerjs/preset-sheets-find-replace",
      "locale": "@univerjs/preset-sheets-find-replace/locales/ru-RU",
      "style": "@univerjs/preset-sheets-find-replace/lib/index.css"
    }
  ],
  "plugins": [
    {
      "client": "@univerjs/find-replace",
      "locale": "@univerjs/find-replace/locale/ru-RU",
      "style": "@univerjs/find-replace/lib/index.css"
    },
    {
      "client": "@univerjs/sheets-find-replace",
      "facade": "@univerjs/sheets-find-replace/facade"
    }
  ],
  "server": false
}
```

Функция поиска и замены позволяет быстро находить и заменять нужное содержимое в электронных таблицах. Различные параметры совпадения помогают эффективно обрабатывать данные.

Откройте панель поиска и замены в полном примере с плагинами ниже, чтобы попробовать эту функцию.

> Interactive example: [Open the playground](/playground/sheets/basic-via-plugin)

## Режим плагина

### Установка

#### npm

```bash
npm install @univerjs/find-replace @univerjs/sheets-find-replace
```

#### pnpm

```bash
pnpm add @univerjs/find-replace @univerjs/sheets-find-replace
```

#### yarn

```bash
yarn add @univerjs/find-replace @univerjs/sheets-find-replace
```

#### bun

```bash
bun add @univerjs/find-replace @univerjs/sheets-find-replace
```

### Использование

```typescript
import { LocaleType, mergeLocales, Univer } from '@univerjs/core'
import { UniverFindReplacePlugin } from '@univerjs/find-replace' // [!code ++]
import FindReplaceEnUS from '@univerjs/find-replace/locale/en-US' // [!code ++]
import { UniverSheetsFindReplacePlugin } from '@univerjs/sheets-find-replace' // [!code ++]
import '@univerjs/find-replace/lib/index.css' // [!code ++]
import '@univerjs/sheets-find-replace/facade' // [!code ++]

const univer = new Univer({
  locale: LocaleType.EN_US,
  locales: {
    [LocaleType.EN_US]: mergeLocales(
      FindReplaceEnUS, // [!code ++]
    ),
  },
})

univer.registerPlugin(UniverFindReplacePlugin) // [!code ++]
univer.registerPlugin(UniverSheetsFindReplacePlugin) // [!code ++]
```

## Поддержка мобильных устройств

Сначала настройте [мобильный редактор](https://docs.univer.ai/ru-RU/guides/sheets/getting-started/installation.md#mobile-support). В коде инициализации режима плагинов на этой странице замените указанные настольные регистрации мобильными экспортами тех же пакетов **до открытия документа**. Сохраните модели, стили, локализации и импорты Facade; не регистрируйте оба варианта.

| Пакет                           | Настольная регистрация          | Мобильная регистрация                   |
| ------------------------------- | ------------------------------- | --------------------------------------- |
| `@univerjs/find-replace`        | `UniverFindReplacePlugin`       | `UniverFindReplaceMobileUIPlugin`       |
| `@univerjs/sheets-find-replace` | `UniverSheetsFindReplacePlugin` | `UniverSheetsFindReplaceMobileUIPlugin` |

## Режим предустановки

### Установка

#### npm

```bash
npm install @univerjs/preset-sheets-find-replace
```

#### pnpm

```bash
pnpm add @univerjs/preset-sheets-find-replace
```

#### yarn

```bash
yarn add @univerjs/preset-sheets-find-replace
```

#### bun

```bash
bun add @univerjs/preset-sheets-find-replace
```

### Использование

```typescript
import { UniverSheetsCorePreset } from '@univerjs/preset-sheets-core'
import UniverPresetSheetsCoreEnUS from '@univerjs/preset-sheets-core/locales/en-US'
import { UniverSheetsFindReplacePreset } from '@univerjs/preset-sheets-find-replace' // [!code ++]
import UniverPresetSheetsFindReplaceEnUS from '@univerjs/preset-sheets-find-replace/locales/en-US' // [!code ++]
import { createUniver, LocaleType, mergeLocales } from '@univerjs/presets'
import '@univerjs/preset-sheets-core/lib/index.css'
import '@univerjs/preset-sheets-find-replace/lib/index.css' // [!code ++]

const { univerAPI } = createUniver({
  locale: LocaleType.EN_US,
  locales: {
    [LocaleType.EN_US]: mergeLocales(
      UniverPresetSheetsCoreEnUS,
      UniverPresetSheetsFindReplaceEnUS, // [!code ++]
    ),
  },
  presets: [
    UniverSheetsCorePreset(),
    UniverSheetsFindReplacePreset(), // [!code ++]
  ],
})
```

## Facade API

Полные определения типов Facade API доступны в [справочнике Facade API](https://docs.univer.ai/ru-RU/reference/facade.md).

### Импорт

> [!INFO: Примечание о режиме плагина]
> Импортировать пакет Facade вручную требуется только в режиме плагина. В режиме предустановки соответствующий пакет Facade уже включён, поэтому дополнительный импорт не нужен.

```typescript
import '@univerjs/sheets-find-replace/facade'
```

### Создание средства поиска текста

`univerAPI.createTextFinderAsync()` создаёт средство поиска текста и возвращает экземпляр `FTextFinder`.

Некоторые методы [`FTextFinder`](https://docs.univer.ai/ru-RU/reference/facade/text-finder.md):

| Метод                 | Описание                                                                                                            |
| --------------------- | ------------------------------------------------------------------------------------------------------------------- |
| findAll               | Возвращает все совпавшие ячейки текущего листа; последняя совпавшая ячейка становится текущей                       |
| findNext              | Возвращает следующую совпавшую ячейку текущего листа, если она есть, и делает её текущей                            |
| findPrevious          | Возвращает предыдущую совпавшую ячейку текущего листа, если она есть, и делает её текущей                           |
| getCurrentMatch       | Возвращает текущую совпавшую ячейку текущего листа                                                                  |
| matchCaseAsync        | Настраивает учёт регистра: при значении true поиск учитывает регистр, иначе игнорирует его                          |
| matchEntireCellAsync  | Настраивает совпадение со всей ячейкой: при значении true поиск сопоставляет всё значение ячейки, иначе — его часть |
| matchFormulaTextAsync | Настраивает поиск по тексту формулы: при значении true поиск выполняется по тексту формулы, иначе — по значению     |
| replaceAllWithAsync   | Заменяет заданным текстом все найденные совпадения                                                                  |
| replaceWithAsync      | Заменяет заданным текстом текущее совпадение                                                                        |
| ensureCompleteAsync   | Гарантирует завершение поиска. Особенно полезен после смены текущего листа                                          |

```typescript
// Assume the current sheet is empty sheet.
const fWorkbook = univerAPI.getActiveWorkbook()
const fWorksheet = fWorkbook.getActiveSheet()

// Set some values to the range A1:D10.
const fRange = fWorksheet.getRange('A1:D10')
fRange.setValues([
  [1, 2, 3, 4],
  [2, 3, 4, 5],
  [3, 4, 5, 6],
  [4, 5, 6, 7],
  [5, 6, 7, 8],
  [6, 7, 8, 9],
  [7, 8, 9, 10],
  [8, 9, 10, 11],
  [9, 10, 11, 12],
  [10, 11, 12, 13],
])

// Create a text-finder to find the text '5'.
const textFinder = await univerAPI.createTextFinderAsync('5')

// Find all cells that contain the text '5'.
const matchCells = textFinder.findAll()
matchCells.forEach((cell) => {
  cell.getA1Notation() // D2, C3, B4, A5
})
```
