Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Обрезка длинного текста (https://javascript.ru/forum/misc/5498-obrezka-dlinnogo-teksta.html)

CJRoman 19.10.2009 14:44

Обрезка длинного текста
 
Привет. Подскажите пожалуйста, вот есть допустим очень длинная строчка. И надо, чтобы она обрезалась на 22 символе (при условии, что в строчке нет пробелов). Как это сделать?:help:

Kolyaj 19.10.2009 14:55

http://javascript.ru/String/substr

Riim 19.10.2009 15:02

На C#

using System;
using System.Text;
using System.Text.RegularExpressions;

public class TextUtils
{
	// ....

	public static string Fading(string text)
	{
		if (text == null)
		{
			return text;
		}
		StringBuilder stringBuilder = new StringBuilder();
		for (int i = 0, length = text.Length; i < length; i++)
		{
			int opacity = (int)(100.0F / (length + 1) * (length - i));
			stringBuilder.Append("<span style=\"opacity: 0.");
			if (opacity < 10)
			{
				stringBuilder.Append("0").Append(opacity);
			}
			else
			{
				stringBuilder.Append(opacity % 10 == 0 ? opacity / 10 : opacity);
			}
			stringBuilder
				.Append("; filter: progid:DXImageTransform.Microsoft.Alpha(opacity=")
				.Append(opacity)
				.Append("); zoom: 1;\">")
				.Append(text[i])
				.Append("</span>");
		}
		return stringBuilder.ToString();
	}

	public static string InLength(string text, int length, int fadingLength)
	{
		if (text == null || text.Length <= length || length < 2 || length <= fadingLength || fadingLength < 1)
		{
			return text;
		}
		Match match = Regex.Match(text, "\\S{" + (length + 1) + "}", RegexOptions.Compiled);
		if (match.Success)
		{
			length += match.Index - fadingLength;
			return text.Substring(0, length) + Fading(text.Substring(length, fadingLength));
		}
		else
		{
			return text;
		}
	}

	// ....
}


Используется так:
Response.Write(TextUtils.InLength("01234567890123456789012345", 22, 10));


Варианта на javascript-е у меня нет, но думаю переделать не сложно.

JSprog 19.10.2009 15:18

<script>
var sI="01234567890123456789012345678901234567890123456789";
function fO(str){
return str.slice(0,12)
}
alert(fO(sI));
</script>

Riim 19.10.2009 15:28

Kolyaj, JSprog, читайте внимательней:
Цитата:

Сообщение от CJRoman
при условии, что в строчке нет пробелов


JSprog 19.10.2009 15:31

А если есть то не обрезать? Или обрезать до блежайшего пробела?

Riim 19.10.2009 15:40

Цитата:

Сообщение от JSprog
А если есть то не обрезать? Или обрезать до блежайшего пробела?

скорей всего нужно просто вместить текст в определенную ширину, т. е. нужно обрезать, если есть достаточно длинный кусок без пробельных символов (браузер переносить не будет).

Kolyaj 19.10.2009 15:41

Цитата:

Сообщение от Riim
читайте внимательней:

Там ничего конкретного нет, чтобы читать.

JSprog 19.10.2009 15:56

<script>
var sI="01234567890123456789012345678901234567890123456789";
function fO(str){
sZ=str.slice(0,12);
if(sZ.indexOf(" ")==-1){
alert(sZ);
}
}
fO(sI);
</script>

Мне бы ваши проблемы=(

CJRoman 19.10.2009 16:54

И еще ну ооочень тупой вопрос. Я просто наскоряк изучаю яву. Есть ли в яве функция, наподобие isset в РНР? Которая определяет, существует ли переменная?

JSprog 19.10.2009 17:06

Вот тут гляньте


Часовой пояс GMT +3, время: 02:18.