Ⅰ java過濾sql關鍵字的正則替換掉
java過濾sql關鍵字的正則替換掉方法如下:
可以在C#中這樣做:Regexregex = newRegex(@"]*>[^");
stringcleanedHtml = regex.Replace(html, "");
可是我並不想再寫個循環去遍歷每條記錄,然後保存每條記錄,我想在資料庫中一步到位,而sql只提供了簡單的replace函數,這個函數明顯不能達到咱的要求,那就去寫一個自定義函數吧。
函數源代碼如下:CREATE functiondbo.regexReplace
(@source ntext,--原字元串@regexp varchar(1000),--正則表達式@replace varchar(1000),--替換值@globalReplace bit=1,--是否是全局替換@ignoreCase bit=0 --是否忽略大小寫)returnS varchar(1000)AS
begin
declare@hr intege
declare@objRegExp integer
declare@result varchar(5000)exec@hr =sp_OACreate'VBScript.RegExp',@objRegExp OUTPUT
IF@hr <>0 begin
exec@hr =sp_OADestroy@objRegExp
returnnullend
exec@hr =sp_OASetProperty@objRegExp,'Pattern',@regexp
IF@hr <>0 begin
exec@hr =sp_OADestroy@objRegExp
returnnullend
exec@hr =sp_OASetProperty@objRegExp,'Global',@globalReplace
IF@hr <>0 begin
exec@hr =sp_OADestroy@objRegExp
returnnullend
exec@hr =sp_OASetProperty@objRegExp,'IgnoreCase',@ignoreCase
IF@hr <>0 begin
exec@hr =sp_OADestroy@objRegExp
returnnullend
exec@hr =sp_OAMethod@objRegExp,'Replace',@result OUTPUT,@source,@replace
IF@hr <>0 begin
exec@hr =sp_OADestroy@objRegExp
returnnullend
exec@hr =sp_OADestroy@objRegExp
IF@hr <>0 begin
returnnullend
return@result
end
需要注意的是,即使寫好了這個函數,也並不能馬上使用。執行這個函數時可能會出現以下的錯誤:Msg 15281, Level 16, State 1, Line 1
SQL Server blocked access to procere 'sys.sp_OACreate' of component 'Ole Automation Proceres' because this component is turned off as part of the security configuration for this server. A system administrator can enable the use of 'Ole Automation Proceres' by using sp_configure. For more information about enabling 'Ole Automation Proceres', see "Surface Area Configuration" in SQL Server Books Online.
這是因為未開啟Ole Automation Proceres選項,MSDN中的Ole Automation Proceres選項。執行下面的語句開啟這個選項:sp_configure'show advanced options',1;GO
RECONFIGURE;GOsp_configure'Ole Automation Proceres',1;GO
RECONFIGURE;GO
所有的准備工作都已經做好,那就試驗一下吧。
Example1:忽略大小寫並替換selectdbo.regexReplace(',']*>[^','',1,1)
Example2: 使用貪婪匹配
html代碼:
Also Available - Smith & Hogan: Criminal Law Cases & Materials 10th ed
There is, as ever, detailed analysis of the many recent case developments, in particular,
a revision of the chapter dealing with secondary liability and joint enterprise.
調用代碼:selectdbo.regexReplace(html,']*>(.|
)*?','',1,1)
Example3:去除html標簽selectdbo.regexReplace('
Key Contact:
Mr Jack, Zhou
General Manager
Mr A, Ho
Marketing Director
Overseas Sales
MsWinny, Luo
Sales Manager
Overseas Sales',']*>','',1,0)
Example4:資料庫欄位值替換updateBooks。
Ⅱ java 字元串替換
importjava.util.HashMap;
importjava.util.Map;
importjava.util.Map.Entry;
publicclassDemo{
publicstaticvoidmain(String[]args){
print("/user/{method}/{userid}.jsp","/user/update/123.jsp");
}
privatestaticvoidprint(Stringtext,Stringtext2){
Map<String,String>map=findMap(text,text2);
for(Entry<String,String>entry:map.entrySet()){
System.out.println(entry.getKey()+":"+entry.getValue());
}
}
publicstaticMap<String,String>findMap(Stringtext,Stringtext2){
Map<String,String>map=newHashMap();
String[]split=text.split("/");
String[]split2=text2.split("/");
if(split.length!=split2.length){
returnnull;
}
for(inti=0;i<split.length;i++){
if(!split[i].equals(split2[i])){
removePrefix(split,split2,i);
removeSuffix(split,split2,i);
if(split[i].matches("\{.*\}")){
split[i]=split[i].substring(1,split[i].length()-1);
map.put(split[i],split2[i]);
}
}
}
returnmap;
}
privatestaticvoidremovePrefix(String[]arr,String[]arr2,inti){
for(intj=1;j<arr[i].length();j++){
if(!arr2[i].startsWith(arr[i].substring(0,j))){
arr[i]=arr[i].substring(j-1);
arr2[i]=arr2[i].substring(j-1);
break;
}
}
}
privatestaticvoidremoveSuffix(String[]arr,String[]arr2,inti){
for(intj=arr[i].length();j>0;j--){
if(!arr2[i].endsWith(arr[i].substring(j))){
intlength=arr2[i].length()-arr[i].length();
arr[i]=arr[i].substring(0,j+1);
arr2[i]=arr2[i].substring(0,j+1+length);
break;
}
}
}
}
//程序輸出
userid:123
method:update
程序思路:
先按照/把字元串分成幾分,然後找到不一致的,掐頭去尾,就得到結果了。
Ⅲ java 將"\"替換為"/"的正則表達式是什麼比如我要將"E:\\Media\\" 替換為E:/Media/,
例如:
String s="E:\\Media\\";//現實路徑是E:\Media\
//replace(regex,s);
String str=s.replaceAll("\\\\","/");
第一個參數是正則表達式
如果你想表示符號\(反斜杠)內 你需要用字元串容"\\"因為轉義字元的關系
如果你想表示符號\(反斜杠) 你需要用正則表達式"\\\\"因為轉義字元的關系
並且正則表達式中的"\"有專門的功能,如"\d"表示數字。
Ⅳ JAVA中REPLACE和REPLACEALL的區別 以及一些特殊字元替換
replace的參數是char和CharSequence,即可以支持字元的替換,也支持字元串的替換(CharSequence即字元串序列的意思,說白了也就是字元串);
replaceAll的參數是regex,即基於規則表達式的替換,比如:可以通過replaceAll("\\d", "*")把一個字元串所有的數字字元都換成星號;
相同點:都是全部替換,即把源字元串中的某一字元或字元串全部換成指定的字元或字元串;
不同點:replaceAll支持正則表達式,因此會對參數進行解析(兩個參數均是),如replaceAll("\\d", "*"),而replace則不會,replace("\\d","*")就是替換"\\d"的字元串,而不會解析為正則。
另外還有一個不同點:「\」在Java中是一個轉義字元,所以需要用兩個代表一個。
例如System.out.println( "\\" ) ;只列印出一個"\"。但是「\」也是正則表達式中的轉義字元,需要用兩個代表一個。所以:\\\\被java轉換成\\,\\又被正則表達式轉換成\,因此用replaceAll替換「\」為"\\",就要用replaceAll("\\\\","\\\\\\\\"),而replace則replace("\\","\\\\")。
如果只想替換第一次出現的,可以使用replaceFirst(),這個方法也是基於規則表達式的替換,但與replaceAll()不同的是,只替換第一次出現的字元串。
Ⅳ JAVA里,如何匹配一個多位數(正則表達式)
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public final class Second {
public static void main( String[] args )
{
String regex = "[0-9]{1,}";
String str = " 33 444 5555";
Pattern pat = Pattern.compile(regex);
Matcher matcher = pat.matcher(str);
int i=0;
while (matcher.find()) {
String temp = str.substring(matcher.start()+7*i,matcher.end()+7*i);
str=str.replaceAll(temp, "<b>"+temp+"</b>");
i++;
}
System.out.println(str);
}
}
Ⅵ Java如何去除字串中的空格、回車、換行符、製表符
Java如何去除字串中的空格、回車、換行符、製表符 笨方法:String s = 你要去除的字串;
1.去除空格:s = s.replace(『\\s』,);
2.去除回車:s = s.replace(『
』,);
這樣也可以把空格和回車去掉,其他也可以照這樣做。
註:
回車(\u000a)
\t 水平製表符(\u0009)
\s 空格(\u0008)
換行 將游標移動到下一行第一格 相當於平時用的回車 \r 回車 將游標移動到當前行第一格}
import java.util.regex.Matcher;import java.util.regex.Pattern;public class StringUtils { /** *正則 */ public static String replaceBlank(String str) { String dest = ""; if (str!=null) { Pattern p = Pattern.pile("\\s*|\t|\r|\n"); Matcher m = p.matcher(str); dest = m.replaceAll(""); } return dest; } public static void main(String[] args) { System.out.println(StringUtils.replaceBlank("just do it!")); } /*----------------------------------- 笨方法:String s = "你要去除的字串"; 1.去除空格:s = s.replace('\\s',''); 2.去除回車:s = s.replace('\n',''); 這樣也可以把空格和回車去掉,其他也可以照這樣做。 註:\n 回車(\u000a) \t 水平製表符(\u0009) \s 空格(\u0008) \r 換行(\u000d)*/}
c#如何去除字串中的空格,回車,換行符,製表符
string l_strResult = 你的字串.Replace("\n", "").Replace(" ","").Replace("\t","").Replace("\r","");
關於在字串中如何去除回車和製表符的搜尋推薦
正則表示式沒學過? import java.util.regex.Matcher; import java.util.regex.Pattern; public class StringUtils { /** *正則 */ public s
我們使用過的方法是寫一個過濾這些製表符的工具類
C#如何去掉字串中的換行符
從資料庫中返回json格式的資料,但由於資料庫中的資料中有換行符,導致返回的json資料錯誤。
【原因分析】
用for迴圈語句來分析出錯欄位字串中每個字元的ASCII碼,可以看出存在值分別為13、10的兩個字元,造成換行,導致json格式出錯。
【解決方法】
用C#中string的replace函式替換掉這兩個字元,下面是部分程式碼供參考。
jsonStr.Append('subject':' +cleanString(rd.GetString(1)) + ',);
jsonStr.Append('answer':' + cleanString(rd.GetString(2)) + ',);
private string cleanString(string newStr){
如何去掉字串前空白符?空格符,TAB製表符,回車ASCII碼各為多少
在objective-c中,如何去掉一個string 的前後的空格字元或某個特定字元呢?
如@ 「 abc 123 」字串前後有空格,該如何去掉?
使用nsstring 的例項方法 :可以解決該問題。
方法如下:
C程式碼 收藏程式碼
[@" abc 123 " :[NSCharacterSet whitespaceCharacterSet]];
NSString *newString = [oldString :[NSCharacterSet ]];
NSString 中該方法說明如下:
:
Returns a new string made by removing from both ends of the receiver characters contained in a given character set.
- (NSString *):(NSCharacterSet *)set
Parameters
set
A character set containing the characters to remove from the receiver. set must not be nil .
Return Value
A new string made by removing from both ends of the receiver characters contained in set . If the receiver is posed entirely of characters from set , the empty string is returned.
這是典型的其他語言中trim 方法。我要問的是,如何去掉最左邊的空格?又該如何去掉最右邊的空格?
在NSString 的類中沒有提供實現這類需求的方法,我們只能手工去新增這些方法。
C程式碼 收藏程式碼
@interface NSString (TrimmingAdditions)
- (NSString *):(NSCharacterSet *)characterSet ;
- (NSString *):(NSCharacterSet *)characterSet ;
@end
@implementation NSString (TrimmingAdditions)
- (NSString *):(NSCharacterSet *)characterSet {
NSUInteger location = 0;
NSUInteger length = [self length];
unichar charBuffer[length];
[self getCharacters:charBuffer];
for (location; location < length; location++) {
if (![characterSet characterIsMember:charBuffer[location]]) {
break;
}
}
return [self substringWithRange:NSMakeRange(location, length - location)];
}
- (NSString *):(NSCharacterSet *)characterSet {
NSUInteger location = 0;
NSUInteger length = [self length];
unichar charBuffer[length];
[self getCharacters:charBuffer];
for (length; length > 0; length--) {
if (![characterSet characterIsMember:charBuffer[length - 1]]) {
break;
}
}
return [self substringWithRange:NSMakeRange(location, length - location)];
}
@end
word如何去除回車符和換行符
一、word去除回車符(段落標記)的方法,以word2007為例:
1、單擊word2007文件左上角的「Office按鈕」,單擊「word選項」。
2、單擊「顯示」選項,取消勾選「始終在螢幕上顯示這些格式標記」下方的「段落標記」復選框,單擊「確定」。
3、單擊「開始」選單,單擊工具欄中的「顯示/隱藏編輯標記」按鈕使段落標記不顯示。
二、word去除(手動)換行符的方法,以word2007為例:
1、開啟word文件,單擊「開始」選單下的「替換」命令,在彈出的「查詢和替換」對話方塊中單擊「查詢內容」右側的輸入框,單擊「更多」按鈕。
2、單擊「特殊格式」按鈕,單擊「手動換行符」命令。
3、在「查詢和替換」對話方塊中單擊「替換為」右側的輸入框,單擊「全部替換」按鈕。
4、在彈出的提示框中單擊「確定」按鈕。
可以通過以下方法解決問題:
1、去不掉的,列印的時候不顯示。