Find and replace characters in file names
I need to transfer much of my user folder (home) to a non-mac computer. My problem is that I have become too used to the generous file name allowances on the Mac. Many of my files have characters such as "*" "!" "?" and "|". I know these are problems because they are often wild cards (except the pipe). Is there a way that I can do a find and replace for these characters?
For example, search for all files with an "*" and replace the "*" in the file name with an "@" or a letter? I don't mind having to use the terminal for this (I suspect it will be easier).
Is this possible? Does anyone have any suggestions?
Thank you in advance for any help you may be able to provide.
Mac OS X (10.4.8)
Yep.
"A Better Finder Rename" is great for batch file renaming.
http://www.versiontracker.com/dyn/moreinfo/macosx/11366
Renamer4mac may be all you need.
Best check out VersionTracker. In fact everybody should have this site bookmarked and visited daily.
http://www.versiontracker.com/macosx/
Similar Messages
-
Address book: Find and replace characters?
Hi all,
I just imported VCF file from Outlook to Address book. I am in Iceland and the Icelandic characters came wrong. Is there any way to batch find and replace characters in Address book? That is in individual cards.
Thanks,
HilmarI believe the only way would be to write an AppleScript.
-
Hi. I'm using Dreamweaver CS4. I would like to do a find and replace through my site with Dreamweaver but I only want it to search through .cfm files. Currently it is searching through .html and .txt files along with .cfm. Is there a way to do a find and replace on just .cfm files?
- TomYou can't do it on just one type of file. However, you can do find and replace in selected files. Ctrl-click to select the targeted files in the Files panel, and then choose Selected Files in Site from the Find In drop-down.
-
VBA Word Find and Replace characters but excluding certain characters
I am trying to write VBA code in Word that I will eventually run from a VBA Excel module. The aim of the project is to find specific strings in the open Word document that have length of either one or two characters and are of a certain format, and replace
them with other strings in the same format. This is to do with transposing (i.e. changing the musical key) of chord symbols in a songsheet in Word. The Find and Replace strings are contained in ranges in an Excel workbook, which is why I want to eventually
run the code from Excel. I'm much more experienced in writing VBA code in Excel than in Word, and I'm fairly confident with transferring the 'Word VBA' code into an Excel module.
At the moment I'm trying out code entirely in Word, and I've come across a stumbling block. For example, I want it to Find "A" and replace with "B",
BUT only if the "A" is NOT followed by "#" (sharp) or "b" (flat).
Here is the code I've got in Word VBA, which I obtained by editing code produced by the recorder:
Sub F_R()
'Find text must have specific font
With Selection.Find.Font
.Bold = True
.Underline = wdUnderlineWords
.Superscript = False
.Subscript = False
End With
'Replacement text must have specific font
With Selection.Find.Replacement.Font
.Bold = True
.Underline = wdUnderlineWords
.Superscript = False
.Subscript = False
End With
'Find & Replace strings
With Selection.Find
.Text = "A" 'hard-coded here for testing, but this will
'eventually be referenced to a cell in Excel
.Replacement.Text = "B" 'hard-coded here for testing, but this will
'eventually be referenced to a cell in Excel
.Forward = True
.Wrap = wdFindContinue
.Format = True
.MatchCase = True
.MatchWholeWord = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
End Sub
For the Find & Replace section I want to do something like:
With Selection.Find
.Text = "A"
.Text <> "A#"
.Text <> "Ab"
.Replacement.Text = "B"
End With
- but this produces a syntax error, presumably because you can have only one .Text line (or it won't accept <>?)
I tried adopting the way of excluding chars when using the Like operator, and while it compiles, it will not replace
any "A":
With Selection.Find
.Text = "A[!b#]"
.Replacement.Text = "B"
End With
I suspect that I'm going to have to change tack completely in the way I'm doing this. Do you have any suggestions, please?
The chord names/symbols are preceded/succeeded by either spaces or paragraph returns and can look like these, for example (all Font Bold and Underlined words only):
C<sup>7</sup>
Dm<sup>7</sup>
Eb<sup>-5</sup>
Bb<sup>+11</sup>
F#m<sup>7</sup>
i.e. [ABCDEFG][b # | optional][m |optional][- + | superscript, optional][2 3
5 6 7 9 11 13 | superscript, optional]
The crux of my problem is that the note A should be treated as entirely distinct from Ab or A# (and similar for other flattened/sharpened notes).
Sorry for long post.Hi Ian,
It is not easy to find Microsoft forums. However this forum is for the Visual Studio Net version.
Try this forum for VBA.
https://social.msdn.microsoft.com/Forums/en-US/home?forum=isvvba
Success
Cor -
Find and Replace text in files
Is there a function that will find and replace a word in a few text files at once. E.G replace the word database1 with database2 without going into each script individually and doing and search and replace.
Andrew, you are being so cruel, hardnuts indeed ;)
I won't mention any names, but at least it's not as cruel as some people saying “You may read DBMS_STATS package specification, at least, to get details, if you're too lazy to read manuals.”
Personally I prefer to use a development tool (TOAD, Pl/Sql Developer) instead of a Text type editor. -
Find and replace string in file
hi,
i need to find and replace text (string) data in about 100+ files, i've decided to write a small java program to do it but i'm stuck on how to replace.
here is what i'm heading towards:
class ReplaceString {
BufferedReader in;
BufferedReader os;
public static void main(String args[]) {
ReplaceString obj = new ReplaceString();
obj.replace();
void replace() {
try {
in = new BufferedReader(new FileReader("a.txt");
os = new BufferdWriter(new FileWriter("a.txt");
// read until end of file
String currentLine = new String();
while((currenLine=is.readLine()) != null) {
// if matching text then replace????
if(currentLine.equals("Version 001") {
// how to now replace the Version 001 with Version 002???
}catch(IOException e) {
System.out.println(e);
in.close();
os.close();
in.close();
os.close();
}the above code i just typed so there might be errors, but looks ok to me, is there any way once i find the string i want to replace, to replace the string with another string. basically i want to replace all occurrences of the text "Version 001" with "Version 002"
Thank you.Is it always true, as in your example, that the replacement is the same length as the existing string? If so, this one's easy.
Is it also true that you don't need to worry about 16-bit chars? (Again, as in your example.) If you're using just ASCII characters, this gets easier still.
1) Segregate the file I/O from the search/replace process.
2) Main becomes:
readFile();
replace( "this", "that" );
writeFile();Use a byte array buffer, defined in your main class. Fill it via the readFile() code. Use a RandomAccessFile, check its length() to allocate your byte array, then do a single read() to fill the buffer.
A brute force search will certainly work: scan for the first search character, then check the rest for a match, replace if you've got a match and continue scanning. Alternative if your file's aren't too big: create a String from the byte array:
// buffer is a byte array
String s = new String( buffer );And use the String.replaceAll() to do the search/replace. Recover the buffer with:
buffer = string.getBytes();A single write() and close() should handle the remaining work. -
Find and replace with multiple files and with a watch folder
I am trying to create a watch folder that uses red_menace script to:
1. Have a folder that receives multiple xml files that run the script one by one.
2. then move the files to an output folder.
I tried modifying the set TheFIle to choose file -- the original text file to:
with multiple selections allowed
But that doesn't seem to work. I know i'm missing a step. Any help is much appreciated!
Thanks!
The way i'd like to setup things is having an input folder on the desktop (or just have the application on the desktop and I can drag the files onto it), and let it do it's thing. Once it's done have it export the xml files into an output folder.
Here's what i got so far:
on open
set TheFIle to choose file -- the original text file
set TheFolder to ("Macintosh HD:Users:user1:Desktop:out") -- the folder for the output file
set TheName to (GetUniqueName for TheFIle from TheFolder) -- the name for the output file
set TheText to read TheFIle -- get the text to edit
set Originals to {"KPCALDATE", "KPCALEVENT", "KPCALDAY", "KPCALBODY", "obituaries name", "" & return & "</cstyle></pstyle>" & return & "<pstyle name=\"obituaries text\"><cstyle>", "<pstyle name=\"obituaries text\"><cstyle name=\"Graphics Bold leadin\" font=\"ADV AGBook-Medium 2\">", "<pstyle name=\"Recipe Ingredients\"><cstyle>", " .com", " .net", " .org", " .edu", "www .", "www. ", "Ho- nolulu", "<pstyle name=\"kicker 12\"><cstyle allcaps=\"1\">fashion news</cstyle><cstyle allcaps=\"1\">" & return & "</cstyle></pstyle>" & return & "", "<component name=\"Headline 1\" type=\"Headline\">" & return & "<header>" & return & "<field name=\"Component name\" type=\"string\" value=\"Headline 1\"/>" & return & "<field name=\"Component type\" type=\"popup\" value=\"Headline\"/>" & return & "</header>" & return & "<body>" & return & "<pstyle name=\"hed STANDARD 36\"><cstyle>", "<pstyle name=\"obituaries text\"><cstyle allcaps=\"1\">", "<pstyle name=\"obituaries text\"><cstyle name=\"Graphics Bold leadin\">", "<pstyle name=\"tagline\"><cstyle>-", "-", "
Per serving:", "<pstyle name=\"Titlebar - mini, red\"><cstyle allcaps=\"1\">NATION & World </cstyle><cstyle allcaps=\"1\">Report</cstyle><cstyle allcaps=\"1\">" & return & "</cstyle></pstyle>" & return & "", "</cstyle></pstyle>"} -- the terms that can be replaced
set Replacements to {"subhed", "subhed", "subhed", "Normal", "obituaries text", ", ", "<pstyle name=\"obituaries text\"><cstyle name=\"Graphics Bold leadin\" font=\"ADV AGBook-Medium 2\">", "<pstyle name=\"Recipe Ingredients\"><cstyle>
", ".com", ".net", ".org", ".edu", "www.", "www.", "Honolulu", "", "<component name=\"Headline1\" type=\"Headline\">" & return & "<header>" & return & "<field name=\"Component name\" type=\"string\" value=\"Headline1\"/>" & return & "<field name=\"Component type\" type=\"popup\" value=\"Headline\"/>" & return & "</header>" & return & "<body>" & return & "<pstyle name=\"hed STANDARD 27\"><cstyle>", "<pstyle name=\"obituaries text\"><cstyle allcaps=\"1\">", "<pstyle name=\"obituaries text\"><cstyle name=\"Graphics Bold leadin\">", "<pstyle name=\"tagline\"><cstyle>", " ", "
Per serving:", "","" & return & "</cstyle></pstyle>"} -- the replacement terms
repeat with AnItem from 1 to count Originals
set TheText to (replaceText of TheText from (item AnItem of Originals) to (item AnItem of Replacements))
end repeat
try -- write a new output file
tell application "Finder" to make new file at TheFolder with properties {name:TheName}
set OpenFile to open for access (result as alias) with write permission
write TheText to OpenFile starting at eof
close access OpenFile
on error errmess
try
log errmess
close access OpenFile
end try
end try
end open
to GetUniqueName for SomeFile from SomeFolder
check if SomeFile exists in SomeFolder, creating a new unique name if needed
parameters - SomeFile [mixed]: a source file path
SomeFolder [mixed]: a folder to check
returns [text]: a unique file name and extension
set {Counter, Divider} to {"00", "_"}
-- get the name and extension
set {name:TheName, name extension:TheExtension} to info for file (SomeFile as text)
if TheExtension is missing value then set TheExtension to ""
set TheName to text 1 thru -((count TheExtension) + 2) of TheName
set NewName to TheName & "." & TheExtension
tell application "System Events" to tell (get name of files of folder (SomeFolder as text))
repeat while it contains NewName
set Counter to text 2 thru -1 of ((100 + Counter + 1) as text) -- leading zero
set NewName to TheName & Divider & Counter & "." & TheExtension
end repeat
end tell
return NewName
end GetUniqueName
to EditItems of SomeItems given Title:TheTitle, Prompt:ThePrompt
displays a dialog for multiple item edit (note that a return is used between each edit item)
for each of the items in SomeItems, a line containing it's text is placed in the edit box
the number of items returned are padded or truncated to match the number of items in SomeItems
parameters - SomeItems [list]: a list of text items to edit
TheTitle [boolean/text]: use a default or the given dialog title
ThePrompt [boolean/text]: use a default or the given prompt text
returns [list]: a list of the edited items, or {} if error
set {TheItems, TheInput, TheCount} to {{}, {}, (count SomeItems)}
if TheCount is less than 1 then return {} -- error
if ThePrompt is in {true, false} then -- "with" or "without" Prompt
if ThePrompt then
set ThePrompt to "Edit the following items:" & return -- default
else
set ThePrompt to ""
end if
else -- fix up the given prompt a little
set ThePrompt to ThePrompt & return
end if
if TheTitle is in {true, false} then if TheTitle then -- "with" or "without" Title
set TheTitle to "Multiple Edit Dialog" -- default
else
set TheTitle to ""
end if
set {TempTID, AppleScript's text item delimiters} to {AppleScript's text item delimiters, return}
set {SomeItems, AppleScript's text item delimiters} to {SomeItems as text, TempTID}
set TheInput to paragraphs of text returned of (display dialog ThePrompt with title TheTitle default answer SomeItems)
repeat with AnItem from 1 to TheCount -- pad/truncate entered items
try
set the end of TheItems to (item AnItem of TheInput)
on error
set the end of TheItems to ""
end try
end repeat
return TheItems
end EditItems
to replaceText of SomeText from OldItem to NewItem
replace all occurances of OldItem with NewItem
parameters - SomeText [text]: the text containing the item(s) to change
OldItem [text]: the item to be replaced
NewItem [text]: the item to replace with
returns [text]: the text with the item(s) replaced
set SomeText to SomeText as Unicode text -- TID's are case insensitive with Unicode text
set {TempTID, AppleScript's text item delimiters} to {AppleScript's text item delimiters, OldItem}
set {ItemList, AppleScript's text item delimiters} to {text items of SomeText, NewItem}
set {SomeText, AppleScript's text item delimiters} to {ItemList as text, TempTID}
return SomeText
end replaceText
Message was edited by: gamebreakersWhen you use the open or adding folder items to handlers, you need to add the parameters for the file items passed to them.
I'll go ahead and post the applet/droplet version of my original script from the previous topic for reference:
<pre style="
font-family: Monaco, 'Courier New', Courier, monospace;
font-size: 10px;
margin: 0px;
padding: 5px;
border: 1px solid #000000;
width: 720px; height: 340px;
color: #000000;
background-color: #FFEE80;
overflow: auto;"
title="this text can be pasted into the Script Editor">
-- search and replace multiple items applet/droplet/folder action
-- the terms to replace - edit as needed
property EditableItems : {¬
"one", ¬
"two", ¬
"three", ¬
"four", ¬
"five", ¬
"six", ¬
"seven", ¬
"eight", ¬
"nine", ¬
"ten", ¬
"eleven", ¬
"twelve", ¬
"thirteen", ¬
"fourteen", ¬
"fifteen", ¬
"sixteen", ¬
"seventeen", ¬
"eighteen", ¬
"nineteen", ¬
"twenty"}
-- the folder for the output file(s) - change as needed
property TheFolder : (path to desktop)
property LastEditItems : EditableItems
on run
the applet/droplet was double-clicked
open (choose file with multiple selections allowed)
end run
on open TheItems
items were dropped onto the applet/droplet
parameters - TheItems [list]: a list of the items (aliases) dropped
returns nothing
repeat with AnItem in TheItems
ReplaceMultipleItems from AnItem
end repeat
end open
on adding folder items to this_folder after receiving these_items
folder action - items were added to a folder
parameters - this_folder [alias]: the folder added to
these_items [list]: a list if items (aliases) added
returns nothing
repeat with AnItem in these_items
ReplaceMultipleItems from AnItem
end repeat
end adding folder items to
to ReplaceMultipleItems from SomeFile
replace multiple text items in SomeFile
parameters - SomeFile [alias]: the file to replace items in
returns nothing
set TheName to (GetUniqueName for SomeFile from TheFolder) -- the name for the output file
set TheText to read SomeFile -- get the text to edit
set Originals to (choose from list EditableItems default items LastEditItems with prompt "Select the terms to replace:" with multiple selections allowed) -- the specific terms to replace
set LastEditItems to Originals
set Replacements to (EditItems of Originals with Title given Prompt:"Edit the following replacement terms:") -- the replacement terms
repeat with AnItem from 1 to count Originals
set TheText to (ReplaceText of TheText from (item AnItem of Originals) to (item AnItem of Replacements))
end repeat
try -- write a new output file
tell application "Finder" to make new file at TheFolder with properties {name:TheName}
set OpenFile to open for access (result as alias) with write permission
write TheText to OpenFile starting at eof
close access OpenFile
on error errmess
try
log errmess
close access OpenFile
end try
end try
end ReplaceMultipleItems
to GetUniqueName for SomeFile from SomeFolder
check if SomeFile exists in SomeFolder, creating a new unique name if needed
parameters - SomeFile [mixed]: a source file path
SomeFolder [mixed]: a folder to check
returns [text]: a unique file name and extension
set {Counter, Divider} to {"00", "_"}
-- get the name and extension
set {name:TheName, name extension:TheExtension} to info for file (SomeFile as text)
if TheExtension is in {missing value, ""} then
set TheExtension to ""
else
set TheExtension to "." & TheExtension
end if
set {NewName, TheExtension} to {TheName, (ChangeCase of TheExtension to "upper")}
set TheName to text 1 thru -((count TheExtension) + 1) of TheName
tell application "System Events" to tell (get name of files of folder (SomeFolder as text))
repeat while it contains NewName
set Counter to text 2 thru -1 of ((100 + Counter + 1) as text) -- leading zero
set NewName to TheName & Divider & Counter & TheExtension
end repeat
end tell
return NewName
end GetUniqueName
to EditItems of SomeItems given Title:TheTitle, Prompt:ThePrompt
displays a dialog for multiple item edit (note that a return is used between each edit item)
for each of the items in SomeItems, a line containing it's text is placed in the edit box
the number of items returned are padded or truncated to match the number of items in SomeItems
parameters - SomeItems [list]: a list of text items to edit
TheTitle [boolean/text]: use a default or the given dialog title
ThePrompt [boolean/text]: use a default or the given prompt text
returns [list]: a list of the edited items, or {} if error
set {TheItems, TheInput, TheCount} to {{}, {}, (count SomeItems)}
if TheCount is less than 1 then return {} -- error
if ThePrompt is in {true, false} then -- "with" or "without" Prompt
if ThePrompt then
set ThePrompt to "Edit the following items:" & return -- default
else
set ThePrompt to ""
end if
else -- fix up the given prompt a little
set ThePrompt to ThePrompt & return
end if
if TheTitle is in {true, false} then if TheTitle then -- "with" or "without" Title
set TheTitle to "Multiple Edit Dialog" -- default
else
set TheTitle to ""
end if
set {TempTID, AppleScript's text item delimiters} to {AppleScript's text item delimiters, return}
set {SomeItems, AppleScript's text item delimiters} to {SomeItems as text, TempTID}
set TheInput to paragraphs of text returned of (display dialog ThePrompt with title TheTitle default answer SomeItems)
repeat with AnItem from 1 to TheCount -- pad/truncate entered items
try
set the end of TheItems to (item AnItem of TheInput)
on error
set the end of TheItems to ""
end try
end repeat
return TheItems
end EditItems
to ReplaceText of SomeText from OldItem to NewItem
replace all occurances of OldItem with NewItem
parameters - SomeText [text]: the text containing the item(s) to change
OldItem [text]: the item to be replaced
NewItem [text]: the item to replace with
returns [text]: the text with the item(s) replaced
set SomeText to SomeText as text
if SomeText contains OldItem then
set {TempTID, AppleScript's text item delimiters} to {AppleScript's text item delimiters, OldItem}
try
set {ItemList, AppleScript's text item delimiters} to {text items of SomeText, NewItem}
set {SomeText, AppleScript's text item delimiters} to {ItemList as text, TempTID}
on error ErrorMessage number ErrorNumber -- oops
set AppleScript's text item delimiters to TempTID
error ErrorMessage number ErrorNumber
end try
end if
return SomeText
end ReplaceText
to ChangeCase of SomeText to CaseType
changes the case or capitalization of SomeText to the specified CaseType using Python
parameters - SomeText [text]: the text to change
CaseType [text]: the type of case desired:
"upper" = all uppercase text
"lower" = all lowercase text
"title" = uppercase character at start of each word, otherwise lowercase
"capitalize" = capitalize the first character of the text, otherwise lowercase
returns [text]: the changed text
set SomeText to SomeText as text
if CaseType is not in {"upper", "lower", "title", "capitalize"} then return SomeText
return (do shell script "/usr/bin/python -c \"import sys; print unicode(sys.argv[1], 'utf8')." & CaseType & "().encode('utf8')\" " & quoted form of SomeText)
end ChangeCase
</pre>
Edit: how does the choose from list dialog handle those big strings? I'm guessing not very well - is that why you avoided using them?
Message was edited by: red_menace -
Problem w/ combination of non-Western and accented characters in file names
*Description of problem*
- iTunes U .m4v files preview and play perfectly from iTunes U server, but once downloaded locally on a Mac (via Get Tracks or Subscribe), they no longer play in iTunes software, or stand-alone in QuickTime player or Pro.
- If you drag these files out of iTunes, they appear to not copy (actually, they do copy but the files are made invisible).
*What we know:*
- problem only on macs (same behavior on OS X 4.x and OS X.5.4)
- files sync and play fine on iPod Classic 80gb
- files will not sync to iPhone 1st gen.
- same behavior on both iTunes 7 and 8
- same behavior on QuickTime 7.5.0 and 7.5.5
- not happening on any Windows machines
- appears to be caused by the file name (particularly the combination of non-Western, 2-byte characters (Japanese, Chinese) plus accented roman letters (e.g. 大/dà/big; large).
Either of these alone (not combined) in the title work fine.
- if file is renamed with no character or accented letter or given a name at least 26 characters in length, the file suddenly will play (the files can be renamed and fixed this way either in the iTunes software or at the file level itself, within Music/iTunes/Movies/, and also at the Upload/Manage interface of iTunes U).Yep.
"A Better Finder Rename" is great for batch file renaming.
http://www.versiontracker.com/dyn/moreinfo/macosx/11366
Renamer4mac may be all you need.
Best check out VersionTracker. In fact everybody should have this site bookmarked and visited daily.
http://www.versiontracker.com/macosx/ -
Image Capture and special characters in file names.
Hung up image capture yesterday: We tried to enter a date in the file name of the document we were scanning. It proceeded normally, but then did not save the file and image capture would not scan again until OS restarted.
Problem repeated until we discovered a slash in the file name box. Changed the file name and everything works now.
Software should either prevent user from entering special characters in the file name box, or properly handle the error and not hang up the application.Hi,
Would mind providing a screenshot about how your Content Query Web Part rendering in your environment?
In my environment, it displays the filename which contains periods:
I would suggest you create a new page and insert a Content Query Web Part to perform the test again.
Feel free to reply with the test result or if there any progress.
Thanks
Patrick Liang
Forum Support
Please remember to mark the replies as answers if they help and unmark them if they provide no help. If you have feedback for TechNet Subscriber Support,
contact [email protected]
Patrick Liang
TechNet Community Support -
Content Query Web Part and special characters in file names
Hi All,
Is there an out-of-box way to display periods in a file name if I am displaying a document library files? I do not want to end up doing a custom item style if possible.
For example, file name is 8.5x11Letterhead.docx, 8.5x11Resume.pdf etc. I do not want to display the file names as 85x11Letterhead.docx.
ThanksHi,
Would mind providing a screenshot about how your Content Query Web Part rendering in your environment?
In my environment, it displays the filename which contains periods:
I would suggest you create a new page and insert a Content Query Web Part to perform the test again.
Feel free to reply with the test result or if there any progress.
Thanks
Patrick Liang
Forum Support
Please remember to mark the replies as answers if they help and unmark them if they provide no help. If you have feedback for TechNet Subscriber Support,
contact [email protected]
Patrick Liang
TechNet Community Support -
hello
I would like to replace a bookmarks that are already created in a rtf template file
I Know how to read the rtf file ,It is just that i can't figure out how to rplace a word inside this file
here is my code
File docFile = new File("C:\\test.rtf");
FileReader reader = null;
try {
reader = new FileReader(docFile);
} catch (FileNotFoundException ex) {
ex.printStackTrace();
javax.swing.text.rtf.RTFEditorKit kit = new RTFEditorKit();
// Document doc = jEditorPane1.getDocument();
Document doc = kit.createDefaultDocument();
try {
kit.read(reader, doc, 0);
jEditorPane1.setText(doc.getText(0,doc.getLength()));
} catch (BadLocationException ex) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
}thank you in advancethank y every one for being fast but I have found how to do it
File docFile = new File("C:\\test.rtf");
File outFile = new File("C:\\test2.rtf");
FileWriter writer=null;
FileReader reader = null;
try {
reader = new FileReader(docFile);
} catch (FileNotFoundException ex) {
ex.printStackTrace();
javax.swing.text.rtf.RTFEditorKit kit = new RTFEditorKit();
// Document doc = jEditorPane1.getDocument();
Document doc = kit.createDefaultDocument();
try {
kit.read(reader, doc, 0);
String text=doc.getText(0,doc.getLength());
text=text.replaceAll("&nom&","my name");
//jEditorPane1.setText(doc.getText(0,doc.getLength()));
jEditorPane1.setText(text);
writer=new FileWriter(outFile);
writer.write(text);
writer.close();
reader.close();
} catch (BadLocationException ex) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
} -
Finding and replacing (international??) characters
I'm having trouble finding and replacing characters. Can anyone help me see the wood for the trees?
The characters in question are single quote characters (I asume) which have been entered in a windows box/word program/filemaker progremme or some other. As such, when I open them in a flat file on my Mac I see the following:
�A L O E�
where the "�" and the "�" should actually be single quotes.
On my Mac I can weed these out with the following:
public String cleanString(String text)
if(text != null && text.length() > 0)
if(text.indexOf("�") > -1)
text = replace(text, "�", "'");
if(text.indexOf("�") > -1)
text = replace(text, "�", "'");
if(text.indexOf("�") > -1)
text = replace(text, "�", "'");
if(text.indexOf("�") > -1)
text = replace(text, "�", "'");
return text;
}But on my server (Linux) this just isn't working. It doesn't find the characters. I've tried converting each character to unicode and looking for it that way.
public String cleanString(String text)
String cleaned = "";
if(text != null && text.length() > 0)
boolean flag = false;
for (int i = 0; i < text.length(); i++)
int j = (int)text.charAt(i);
String u = Integer.toHexString(j);
if("221a".equals(u))
flag = true;
continue;
if(flag && "b4".equals(u) || "2260".equals(u) || "a8".equals(u) || "c6".equals(u))
cleaned += "'";
flag = false;
else
if(flag)
cleaned += text.charAt(i -1) + text.charAt(i);
else
cleaned += text.charAt(i);
flag = false;
return cleaned;
}But the same thing happens. It works on my mac, but not on my server.
Part of my problem is that these 'offending characters' are actually comprised of two chars:
eg:
'\u221a' + '\u00b4'
Can anyone point me in the right direction?As such, when I open them in a flat file on my Mac I see the following:First you should open the file using the correct character encoding. Since the file originates from a Windows box, the encoding is probably Windows-1252, aka CP1252. You'll find the code for opening and reading here, just change "UTF-8" to "CP1252."
http://javaalmanac.com/egs/java.io/ReadFromUTF8.html
Next, you should not write non-ASCII characters in source code because it is not portable. If the source code is moved from one system to another, like from Mac OS X to Linux, the way the compiler translates bytes to characters may change. Only ASCII is safe, so it is better to use the portable Unicode escapes (\uXXXX) to represent non-ASCII characters in strings.
From Microsoft's own reference, the "smart" single quotes are U+2018 and U+2019: http://www.microsoft.com/globaldev/reference/sbcs/1252.mspx
so the code to replace them would be
text = text.replace('\u2018', '\'');
text = text.replace('\u2019', '\'');You would need to do the same for the double quotes, \u201C and \u201D
btw as there's a method for replacing charcters in the String class, you don't need to write a new one -
"Find and Replace" for field names in a fillable PDF
Is it possible to do a "Find and Replace" for the field names in a fillable PDF? For example, I have multiple fields that contain the word "Proposed Insured" as part of the field name and would like to find and replace all of them with "Owner". Is there an easy way to do this?
Not really. Even a script can't just rename a field. It needs to create a
new field on top of the old one, but then you lose all the associated
settings, like validation, calculation, format, keystroke, etc. -
In Edge Code can i do a find and replace?
In Edge Code can i do a find and replace on multiple lines of code or just a single line?
You can't do it on just one type of file. However, you can do find and replace in selected files. Ctrl-click to select the targeted files in the Files panel, and then choose Selected Files in Site from the Find In drop-down.
-
Find and Replace Japanese characters in pdf file on iPhone
Hi eveybody !
I want to find and replace Japanese characters in pdf on iPhone.
I using zlib to deflate stream - endstream block and extract text.It's work fine with latin-text.
But when i work with japanese characters , I don't know how to do it ?
I decode a sample japanese pdf file, and I know that each Japanese characters are performances as hex string : "<01b7><0e230a23>..."
But i don't know how to convert Japanese characters to the hex string like that.
Can evrybody help me?
Thanks!Searching is the same process as extracting - since it's about turning page content into something understandable. So that still remains what you need to learn/understand - of course, referring back to all the previous sections about font formats, etc.
Replacing in PDF is EXTREMELY DIFFICULT for two reasons - subset fonts and explicit glyph positioning. Have you determine (conceptually, if nothing else) how you plan to addresses these two issues?
PDF doesn't do UTF8 for page content - so don't worry about that.
Maybe you are looking for
-
After startup of I-tunes an error displays with the message "a unknown error has been ocuured (42032)" and it seems to me that I-Tunes is working properly. I am using Windows 7 proffessional (64 bit) and I-Tunes 10.4.080. Can somebody explain what th
-
DI SERVER - ATTACHMENTS UPDATE
Hi Experts, We are experiencing some troubles with the Attachments in SBO(9.0 PL04), through DI Server. The adding through the SOAP command works as expected, but when coming to Update, SBO throws a curve-ball by complaining that the files already ex
-
Hi everybody, I have a feeling this is so obvious that I'm missing it, so if anyone would give me some advice, I'd appreciate it. I have a method with with three parameters that loops through them and progressively adds or subtracts them with a for l
-
IDisk is nearly full, but more than 1 GB cannot be located...
Is it possible I have ended up with a large fragmented file that has become "invisible"? Is there a way to check for, or locate file fragments and defrag an iDisk? Otherwise, is it possible to reinstall that feature on my MacBook Pro? Will be away mo
-
Form Not saving with all information, Please Help!
I received a form that I need to fill out and save, apparently it was created in Adobe LiveCycle Designer 8.0, Acrobat Pro says that it is an XML form. Adobe Reader says that it cannot save the form which is fine because I have Adobe Acrobat Pro. How