文字列操作(ASP.NET MVC) -- asp.net-mvc フィールド と string フィールド 関連 問題

String manipulation(ASP.NET MVC)












0
vote

問題

日本語

私のデータベース上のレコードの一部を取得して表示し、そのレコードの詳細ページにレコードを表示するコードを持っています..

<事前> <コード> <% Dim id As Integer = _news.Rows(count).Item("IDnews")%> <%=_news.Rows(count).Item("newsTitle")%> <img src='<%= Url.Content("~/NewsPictures/" + _news.Rows(count).Item("newsThumbnail")) %>' alt="" /> <%Dim content As String = _news.Rows(count).Item("newsContent")%> <%If content.Length > 50 Then%> <%content = content.Substring(0, 150) & "..."%> <%End If%> <%=content%> <%=Html.ActionLink("Read More", "NewsPublic", "Administration", New With {id}, DBNull.Value)%>

のようなものを表示します

私たちはあなたにu ...もっと読む

最後の単語が切断される前に完了したことがあります、それともカットされる前に3つの文章を表示する必要があります。上記のサンプルの最後の単語は「大学」でなければなりません。

英語

I have here a code that gets a portion of a record on my database and display it and has a link ("Read More") that renders the viewer to the detailed page of that record..

    <%  Dim id As Integer = _news.Rows(count).Item("IDnews")%>     <%=_news.Rows(count).Item("newsTitle")%>     <img src='<%= Url.Content("~/NewsPictures/" + _news.Rows(count).Item("newsThumbnail")) %>' alt="" />     <%Dim content As String = _news.Rows(count).Item("newsContent")%>      <%If content.Length > 50 Then%>     <%content = content.Substring(0, 150) & "..."%>      <%End If%>      <%=content%>     <%=Html.ActionLink("Read More", "NewsPublic", "Administration", New With {id}, DBNull.Value)%> 

It displays something like:

We assure you that the U... Read More

I would like that the last word be completed before it is cut, or maybe 3 sentences should be displayed before it is cut. The last word in the above sample should be 'University'.

</div
     

回答リスト

4
 
vote
vote
ベストアンサー
 

150位の後の最初のスペースを見つけることができるか、それがスペースを見つけることができない場合は、最後まで拡張されます。 e.g.

<事前> <コード> <%content = content.Substring(0, (content.IndexOf(" ", 150) < 0 ? content.Length : content.IndexOf(" ", 150))) & "..."%>

あなたが150文字の後にスペースがあることを知っている場合:

<事前> <コード> <%content = content.Substring(0, content.IndexOf(" ", 150)) & "..."%>

は十分です

 

you could do something which finds the first space after the 150th character, or if it cant find a space extends to the end. e.g.

<%content = content.Substring(0, (content.IndexOf(" ", 150) < 0 ? content.Length : content.IndexOf(" ", 150))) & "..."%>  

If you know there is a space after the 150 character then:

<%content = content.Substring(0, content.IndexOf(" ", 150)) & "..."%>  

would be sufficient

</div
 
 
   
   
0
 
vote
<事前> <コード> content.Substring(0, content.IndexOf(" ", 150))
 
content.Substring(0, content.IndexOf(" ", 150)) 
</div
 
 
 
 
0
 
vote

行を置き換えます

<事前> <コード> <%content = content.Substring(0, 150) & "..."%>

<事前> <コード> <%content = GetStartOfString(content, 150) %>

それから、ユーティリティクラスまたはあなたが再利用したコードを保持している場所と同様の機能を作成します。

<事前> <コード> select0

このようにして、複数の場所にまたがって広がるのではなく、すべてのコードがある場所にあります。 (ドライ) また、このメソッドの長さをグローバル化し、それを小さな変更だけで幅広く働きます。

 

Replace the line

<%content = content.Substring(0, 150) & "..."%> 

with

<%content = GetStartOfString(content, 150) %> 

Then create a function similar to this in a utilities class or wherever you keep code that you reuse.

public static string GetStartOfString(string s, int length) {         if (s.Length <= length)         {             return s;         }          if(s.IndexOf(" ",length) > 0)             return s.Substring(0, s.IndexOf(" ",length));             return s.substring(0,length);  } 

This way you have all the code in one place rather than spread across multiple places. (DRY) Also you could globalize the length in this method and have it work site wide with just a small change.

</div
 
 
-2
 
vote

代替ソリューションは、データベースに2つのフィールドを持つことです。メインコンテンツ用のものとヘッドライン用です。見出しは主な内容の概要を提供し、150文字に制限されます。これはあなたの見解でスパゲッティコードを避け、あなたのコンテンツはよりよく説明されるでしょう。

 

An alternative solution would be to have 2 fields in your database. One for the main Content and one for a Headline. The Headline provides a summary of the main Content and be limited to 150 characters. This would avoid any spaghetti code in your View and your content would be better described.

</div
 
 
   
   

関連する質問

118  PostgreSQLの文字列リテラルとエスケープ文字  ( String literals and escape characters in postgresql ) 
エスケープ文字をテーブルに挿入しようとすると、警告が発生します。 例えば: <事前> <コード> create table EscapeTest (text varchar(50)); insert into EscapeTest (text) value...

6  文書の幅に合わせた文字数を測定するにはどうすればよいですか。  ( How can i measure how many characters will fit the width of the document ) 
JavaScript(JQueryを使用している)で、ブラウザウィンドウの行に収まる文字数を知っている関数。私は問題を軽減するためにモノスパースフォントを使っていますが、それは異なるフォントのためにそれを一般化しても良いでしょう。 ブラウザ内の行を埋める文字...

11  各反復(Groovy)に「IT」を割り当てる  ( Assign it in each iteration groovy ) 
ねえ、Groovy のリストの各文字列項目をトリミングしようとします。 <事前> <コード> list.each() { it = it.trim(); } しかし、これは閉鎖内でのみ機能します、リストは依然として "foo"、 "bar"、 "groov...

161  文字列のすべての可能な順列のリストを生成します  ( Generate list of all possible permutations of a string ) 
x文字のずれた文字列のすべての可能な順列のリストを生成する方法は、変数の文字リストを含む 任意の言語が機能するが、それは携帯可能であるべきです。 ...

0  文字列操作(ASP.NET MVC)  ( String manipulationasp net mvc ) 
私のデータベース上のレコードの一部を取得して表示し、そのレコードの詳細ページにレコードを表示するコードを持っています.. <事前> <コード> <% Dim id As Integer = _news.Rows(count).Item("IDnew...

28  タイトルケースへのフォーマット文字列  ( Format string to title case ) 
タイトルケース? ...

492  パスとファイル名から違法文字を削除する方法  ( How to remove illegal characters from path and filenames ) 
単純な文字列から、不正なパスとファイル文字を削除する堅牢で簡単な方法が必要です。私は以下のコードを使いましたが、それは何もしていないようです、私は何がありませんか? <事前> <コード> using System; using System.IO; name...

2  #文字数を持つ文字列を生成します  ( Generating strings with number of characters ) 
ループを使用せずに、250のアンダースコアで構成された文字列を生成する方法はありますか? このようなコードを書くことを避けたい: <事前> <コード> var myString= ''; for (var i=0; i < 250; i++) { my...

0  自動インクリメントファイル名  ( Automatic incrementing filename ) 
次の形式のファイル名があります。 タイムスタンプ-username-1 このファイルは絶えず書き込まれていますが、大きすぎる前に新しいファイルを作成したいのですが。 タイムスタンプ-username-2 このメモリの量(すなわち、変数またはほとんどの変数)...

11  ストリングを整合的にuncommon整数型に変換する方法は?  ( How to portably convert a string into an uncommon integer type ) 
背景: uint16_t のように、 scanf() に標準の整数型に変換したい場合は、 SCNu16 <コード> <inttypes.h> から <事前> <コード> #include <stdio.h> #include <inttypes.h> uint...




© 2022 cndgn.com All Rights Reserved. Q&Aハウス 全著作権所有