Перенос текста — это распространенная задача в программировании, когда вам необходимо отформатировать длинные строки текста так, чтобы они соответствовали заданной ширине, или разбить их на несколько строк. В этой статье мы рассмотрим десять эффективных методов переноса текста на различных языках программирования, а также приведем примеры кода для демонстрации каждого метода.
- Python:
Python предоставляет встроенный методtextwrap, который упрощает перенос текста.
import textwrap
text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed vitae ultrices erat."
wrapped_text = textwrap.fill(text, width=20)
print(wrapped_text)
<старый старт="2">
В Java вы можете использовать пакет
java.textдля переноса текста с помощью класса Wrap.import java.text.*;
String text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed vitae ultrices erat.";
int width = 20;
String wrappedText = WordUtils.wrap(text, width);
System.out.println(wrappedText);
- JavaScript:
JavaScript не предоставляет встроенной функции переноса текста, но ее можно добиться с помощью регулярных выражений и манипуляций со строками.
function wrapText(text, width) {
let regex = new RegExp(".{1," + width + "}", "g");
return text.match(regex).join("\n");
}
let text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed vitae ultrices erat.";
let wrappedText = wrapText(text, 20);
console.log(wrappedText);
<старый старт="4">
В Ruby вы можете использовать драгоценный камень
word_wrapдля удобного переноса текста.require 'word_wrap'
text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed vitae ultrices erat."
wrapped_text = WordWrap.ww(text, 20)
puts wrapped_text
- C#:
C# предоставляет классTextWrapperв пространстве именMicrosoft.VisualBasic.FileIOдля переноса текста.
using Microsoft.VisualBasic.FileIO;
string text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed vitae ultrices erat.";
int width = 20;
string wrappedText = TextFieldParserWrapper.WrapText(text, width);
Console.WriteLine(wrappedText);
- PHP:
PHP предлагает функциюwordwrapдля переноса текста.
$text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed vitae ultrices erat.";
$width = 20;
$wrappedText = wordwrap($text, $width, "\n");
echo $wrappedText;
- Go:
В Go вы можете использовать пакетtextwrapдля переноса текста.
import (
"fmt"
"strings"
"text/tabwriter"
"text/template"
)
func wrapText(text string, width int) string {
tmpl := fmt.Sprintf("%%-%ds", width)
w := new(tabwriter.Writer)
w.Init(strings.Builder{}, 0, 0, 1, ' ', 0)
fmt.Fprintf(w, tmpl, text)
w.Flush()
return w.String()
}
text := "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed vitae ultrices erat."
width := 20
wrappedText := wrapText(text, width)
fmt.Println(wrappedText)
- Swift:
Swift предоставляет расширение для переноса текста с помощью классаNSParagraphStyle.
import Foundation
extension String {
func wrappedText(width: Int) -> String {
let paragraphStyle = NSMutableParagraphStyle()
paragraphStyle.lineBreakMode = .byWordWrapping
paragraphStyle.maximumLineHeight = CGFloat(width)
let attributes = [NSAttributedString.Key.paragraphStyle: paragraphStyle]
let attributedString = NSAttributedString(string: self, attributes: attributes)
let textContainer = NSTextContainer(size: CGSize(width: CGFloat(width), height: CGFloat.greatestFiniteMagnitude))
let layoutManager = NSLayoutManager()
layoutManager.addTextContainer(textContainer)
let textStorage = NSTextStorage(attributedString: attributedString)
textStorage.addLayoutManager(layoutManager)
layoutManager.glyphRange(for: textContainer)
let wrappedText = layoutManager.characterRange(forGlyphRange: NSMakeRange(0, layoutManager.numberOfGlyphs), actualGlyphRange: nil)
return (self as NSString).substring(with: wrappedText)
}
}
let text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed vitae ultrices erat."
let width = 20
let wrappedText = text.wrappedText(width: width)
print(wrappedText)
- Kotlin:
В Kotlin вы можете использовать функцию расширенияwrapTextдля переноса текста.
fun String.wrapText(width: Int): String {
val regex = "(.{10,$width})(?:\\s+|$)".toRegex()
return regex.replace(this) { "${it.value.trim()}\n" }
}
val text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed vitae ultrices erat."
val width = 20
val wrappedText = text.wrapText(width)
println(wrappedText)
- Rust:
В Rust вы можете использовать контейнерtextwrapдля переноса текста.
use textwrap::Wrapper;
fn wrap_text(text: &str, width: usize) -> String {
let wrapper = Wrapper::new(width).break_words(true);
wrapper.fill(text)
}
fn main() {
let text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed vitae ultrices erat.";
let width = 20;
let wrapped_text = wrap_text(text, width);
println!("{}", wrapped_text);
}
Перенос текста — важная задача в программировании при работе с длинными строками текста. В этой статье мы рассмотрели десять эффективных методов переноса текста на различных языках программирования. Каждый метод сопровождается примерами кода, которые вы можете использовать в качестве справочного материала в своих проектах. Применяя эти методы, вы можете легко манипулировать и форматировать текст так, чтобы он соответствовал указанной ширине. Приятного кодирования!